CF650A Watchmen
题目描述
守望者们正处于危险之中,Doctor Manhattan 和他的朋友 Daniel Dreiberg 需要尽快警告他们。平面上有 $n$ 个守望者,第 $i$ 个守望者位于点 $(x_{i}, y_{i})$。
他们需要制定一个计划,但在实施过程中遇到了一些困难。如你所知,Doctor Manhattan 计算第 $i$ 个守望者与第 $j$ 个守望者之间的距离公式为 $|x_{i}-x_{j}| + |y_{i}-y_{j}|$。而 Daniel 作为一个普通人,所用的距离计算公式是 $\sqrt{(x_i-x_j)^2+(y_i-y_j)^2}$。
行动能否成功取决于满足下述条件的有序对 $(i, j)$ 的数目($1 \leq i < j \leq n$):Doctor Manhattan 计算的第 $i$ 与第 $j$ 个守望者之间的距离恰好等于 Daniel 计算的距离。请你计算所有满足条件的有序对的数量。
输入格式
第一行输入一个整数 $n$($1 \leq n \leq 200000$),表示守望者的数量。
接下来的 $n$ 行中,每行输入两个整数 $x_i$ 和 $y_i$($|x_i|, |y_i| \leq 10^9$),表示第 $i$ 个守望者的坐标。
某些守望者的位置可能重合。
输出格式
输出满足条件的守望者对的数量。即 Doctor Manhattan 和 Daniel 计算出的距离相等的所有守望者对的数量。
说明/提示
在第一个样例中,第 $1$ 个守望者和第 $2$ 个守望者之间的距离为 $|1 - 7| + |1 - 5| = 10$(Doctor Manhattan 的计算方法),而 Daniel 计算的距离为 $\sqrt{(1-7)^2+(1-5)^2}$。对于点对 $(1,1)$、$(1,5)$ 和 $(7,5)$、$(1,5)$,Doctor Manhattan 和 Daniel 计算出的距离是一样的。
由 ChatGPT 5 翻译