#P17042. [NWERC 2021] Flatland Olympics

[NWERC 2021] Flatland Olympics

背景

译自 Northwestern Europe Regional Contest (NWERC) 2021 Problem F。

原题许可协议为 CC BY-SA。

题目描述

奥运会结束后的第二天,作为组织者的你很高兴:在这些麻烦时期,一切 都运转良好。嗯,也不完全是。

从今天早上开始,你的邮箱被投诉邮件塞满了,内容都是关于最重要的比赛——100100 米短跑——观赛视线被遮挡。他们要求退款,或者威胁要在社交媒体上曝光你。更糟糕的是,观众并不只是投诉一次,而是每当某个人在比赛过程中挡住了他们的视线,就会单独给你发一封邮件!当同时有两人或更多人挡住视线时,他们甚至会写多封邮件。不仅如此,还有一些游客向主要赞助商 Dy & Son 投诉,而赞助商也敦促你改善情况。

由于你预计下一届奥运会将允许更多游客观赛,如果不解决这个问题,你认为投诉会更多。如果情况太糟,你甚至可能失去赞助商 Dy & Son。因此,你决定提前计算投诉数量。为此,你将跑道建模为一条直线线段,并根据观众座位计算你最多会收到多少投诉。根据预计投诉数,你将决定是重新安排座位,还是只重新配置垃圾邮件过滤器并尝试寻找新的赞助商。

输入格式

输入包含:

  • 一行四个整数 xs,ys,xex_s,y_s,x_eyey_exs,ys,xe,ye109|x_s|,|y_s|,|x_e|,|y_e| \leq 10^9),其中 s=(xs,ys)s=(x_s,y_s) 是跑道起点,e=(xe,ye)e=(x_e,y_e) 是跑道终点。ssee 都属于跑道。
  • 一行一个整数 nn1n1051 \leq n \leq 10^5),表示游客数量。
  • 接下来 nn 行,每行包含两个整数 xxyyx,y109|x|,|y| \leq 10^9),表示一名游客座位的位置。

保证跑道长度为正,即 ses\neq e。此外,可以假设所有游客坐在不同的位置,且没有游客坐在跑道上。

输出格式

输出对于给定座位安排,你会收到的投诉总数。

0 0 100 0
4
50 20
50 30
50 50
120 0
3
0 0 100 0
5
50 20
50 30
50 -20
50 -30
100 30
2

提示

【样例 22 解释】

:::align{center}

:::

图示:样例输入 #2。跑道画成红线,游客座位用蓝色标出。第二名游客会投诉第一名游客,第四名游客会投诉第三名游客。

【数据规模与约定】

对于所有数据,xs,ys,xe,ye109|x_s|,|y_s|,|x_e|,|y_e| \leq 10^9seqes eq e1n1051 \leq n \leq 10^5;游客坐标满足 x,y109|x|,|y| \leq 10^9;所有游客位置互不相同,且没有游客坐在跑道上。