#Lutece3107. Song for friends
Song for friends
Migrated from Lutece 3107 Song for friends
All parts of this problem, including description, images, samples, data and checker, might be broken. If you find bugs in this problem, please contact the admins.
Description
TAG:极角排序、偏序
本题面由 空気力学の詩 友情提供
“Little Busters! It’s a magic of friends!”
“Little Busters”的成员们放学后再次聚集在操场上,但这一次他们决定来点棒球之外的活动。
恭介提议大家来进行跑步比赛,这个提案很快就得到了众人的通过并决定让理树第一个出场。
操场可以看作一个二维平面坐标系,理树要跑的跑道可以用一条线段来刻画,其中线段的两个端点分别为 。
由“Little Busters”以及校内其它同学共 个人充当观众,坐在操场上观看理树的跑步过程,第 个人的位置可以用坐标系内的一个点 来刻画。
但现在有一个很严重的问题,由于观众们的目光总是追随着理树,因此在理树跑步的过程中可能会出现某个时刻一名观众挡住另一名观众视线的情况。
定义有序对 表示第 名观众在跑步过程中存在被第 名观众挡住的情况,当且仅当:
- 在线段 上(包括端点)存在某个点 ,满足 在以 和点 为端点的线段上
现在恭介想要知道,在理树的跑步过程中,会产生遮挡现象的有序对数量有多少个。
Input
输入的第一行包括四个整数 ,如题面描述中所述表示跑道的两个端点。
接下来的一行有一个正整数 ,表示观众的人数。
接下来的 行每行两个整数 ,表示每个观众的位置。
Output
输出一行一个整数,即在理树的跑步过程中,会产生遮挡现象的有序对数量。
Samples
0 0 100 0
5
50 20
50 30
50 -20
50 -30
100 30
2
0 0 100 0
4
50 20
50 30
50 50
120 0
3
Constraints
$1\le n\le 10^5,|x_S|,|y_S|,|x_E|,|y_E|,|x_i|,|y_i|\le 10^9$
输入数据保证跑道的长度不为 (即 两点不重合);同时保证任意两个人位置不同;同时保证不存在有人的位置在跑道上。
Note
此为第一组样例的示意图,其中红色线段是理树跑步的跑道,蓝色的点代表观众的位置。
由于 号观众会遮挡 号观众; 号观众会遮挡 号观众;因此会产生遮挡现象的有序对数量为 。
Resource
2024 UESTC ICPC Training for Geometry