Description
平面上有z个点,给你p个形如 p1(x1,y1),p2(x2,y2) 的询问,要你求出z个点中离p1更近的点,离p2更近的点,与p1和p2的距离相等的点各有多少个。这里的距离指的是曼哈顿距离,即x坐标之差的绝对值加上y坐标之差的绝对值。
Input
第一行n,m,z,p。下述所有坐标均满足1<=x<=n,1<=y<=m。接下来z行,每行xi,yi表示第i个点的坐标。接下来p行,每行x1,y1,x2,y2描述p1与p2的坐标。 1<=n,m<=10^9 1<=z,p<=100000 (x1,y1)<>(x2,y2)
Output
p行,每行三个数依次表示离p1更近的点,离p2更近的点,与p1和p2距离相等的点的个数。
Sample Input
6 5 6 1
1 2
6 5
5 1
3 3
3 4
4 1
2 3 4 3
Sample Output
1 3 2
HINT
分析:
实在是不想写了QAQ…
就是对于一个询问我们把平面划分成3个区域:
以AB两个点形成的矩形两个平行于y轴的边为界限,划分成了三个区域,然后如果AB是图中的位置分布,那么区域2的那条线斜率为-1并且过矩形的中点…然后在区域1和区域3中,分别去平行于x轴延伸这条直线…然后就形成了一条折线,这条折线上面的点离A点进,下面的离B点近,线上的离两个点距离相同…所以现在有两个选择:
1、在线:treap或者主席树维护
2、离线:树状数组维护
但是我一个都不想写肿么办….QAQ
by >_< NeighThorn