题目描述
题目译自 Open Olympiad in Informatics 2016 Day1 T2 「Хранители / Watchmen」。
守护者们正面临危险,曼哈顿博士和他的朋友丹尼尔·德雷伯格必须紧急警告他们。守护者团队共有 n 名成员,第 i 名成员位于平面上的坐标点 (xi,yi)。
众所周知,曼哈顿博士计算两名守护者 i 和 j 之间的距离使用公式 ∣xi−xj∣+∣yi−yj∣。而丹尼尔作为一个普通人,则认为距离等于 (xi−xj)2+(yi−yj)2。
现在,行动的成功取决于存在多少对 (i,j) (1≤i<j≤n),使得曼哈顿博士计算的守护者 i 和 j 之间的距离等于丹尼尔计算的距离。你的任务正是计算这个数量。
输入格式
第一行包含一个整数 n (1≤n≤200000),表示守护者的数量。
接下来的 n 行,每行包含两个整数 xi 和 yi (∣xi∣,∣yi∣≤109),表示每名守护者的坐标。
输出格式
输出一个整数,表示满足条件的守护者对的数量,即曼哈顿博士计算的距离等于丹尼尔计算的距离的对数。
3
1 1
7 5
1 5
2
在第一个样例中,守护者 1 和守护者 2 之间的距离,曼哈顿博士计算为 ∣1−7∣+∣1−5∣=10,而丹尼尔计算为 (1−7)2+(1−5)2=2⋅13。对于对 (1,1) 和 (1,5),以及 (7,5) 和 (1,5),曼哈顿博士和丹尼尔计算的距离相等。
6
0 0
0 1
0 2
-1 1
0 1
1 1
11
数据范围与提示
详细子任务附加限制及分值如下表所示。其中子任务 0 是样例。
| 子任务 |
测试点编号 |
分值 |
附加限制 |
备注 |
| 1 |
3∼23 |
50 |
1≤n≤1000,−10000≤xi,yi≤10000 |
|
| 2 |
-- |
50 |
|