#HK5432. 「OOI 2016 Day 1」守护者

「OOI 2016 Day 1」守护者

题目描述

题目译自 Open Olympiad in Informatics 2016 Day1 T2 「Хранители / Watchmen

守护者们正面临危险,曼哈顿博士和他的朋友丹尼尔·德雷伯格必须紧急警告他们。守护者团队共有 nn 名成员,第 ii 名成员位于平面上的坐标点 (xi,yi)(x_i, y_i)

众所周知,曼哈顿博士计算两名守护者 iijj 之间的距离使用公式 xixj+yiyj|x_i - x_j| + |y_i - y_j|。而丹尼尔作为一个普通人,则认为距离等于 (xixj)2+(yiyj)2\sqrt{(x_i - x_j)^2 + (y_i - y_j)^2}

现在,行动的成功取决于存在多少对 (i,j)(i, j) (1i<jn)(1 \leq i < j \leq n),使得曼哈顿博士计算的守护者 iijj 之间的距离等于丹尼尔计算的距离。你的任务正是计算这个数量。

输入格式

第一行包含一个整数 nn (1n200000)(1 \leq n \leq 200000),表示守护者的数量。

接下来的 nn 行,每行包含两个整数 xix_iyiy_i (xi,yi109)(|x_i|, |y_i| \leq 10^{9}),表示每名守护者的坐标。

输出格式

输出一个整数,表示满足条件的守护者对的数量,即曼哈顿博士计算的距离等于丹尼尔计算的距离的对数。

3
1 1
7 5
1 5

2

在第一个样例中,守护者 11 和守护者 22 之间的距离,曼哈顿博士计算为 17+15=10|1 - 7| + |1 - 5| = 10,而丹尼尔计算为 (17)2+(15)2=213\sqrt{(1 - 7)^2 + (1 - 5)^2} = 2 \cdot \sqrt{13}。对于对 (1,1)(1, 1)(1,5)(1, 5),以及 (7,5)(7, 5)(1,5)(1, 5),曼哈顿博士和丹尼尔计算的距离相等。

6
0 0
0 1
0 2
-1 1
0 1
1 1

11

数据范围与提示

详细子任务附加限制及分值如下表所示。其中子任务 00 是样例。

子任务 测试点编号 分值 附加限制 备注
11 3233 \sim 23 5050 1n10001 \leq n \leq 100010000xi,yi10000-10000 \leq x_i, y_i \leq 10000
22 -- 5050