AT_abc234_h [ABC234Ex] Enumerate Pairs

题目描述

给定 $N$ 个编号为 $1$ 到 $N$ 的整数对 $(x_i, y_i)$,以及一个整数 $K$。 请按照指定的输出格式,枚举所有满足以下条件的整数对 $(p, q)$: - $1 \leq p < q \leq N$ - $\sqrt{(x_p - x_q)^2 + (y_p - y_q)^2} \leq K$ 保证满足条件的整数对不会超过 $4 \times 10^5$ 组。

输入格式

输入通过标准输入给出,格式如下: > $N$ $K$ > $x_1$ $y_1$ > $x_2$ $y_2$ > $\vdots$ > $x_N$ $y_N$

输出格式

请按如下格式输出: > $M$ > $p_1$ $q_1$ > $p_2$ $q_2$ > $\vdots$ > $p_M$ $q_M$ 首先,在第 $1$ 行输出整数 $M$,表示需要枚举的整数对的个数。 接下来 $M$ 行,每行输出一个需要枚举的整数对 $(p_i, q_i)$,用空格分隔,**按字典序排列**。 对于整数对 $(a, b)$ 和 $(c, d)$,当且仅当满足以下任一条件时,$(a, b)$ 在字典序上优先于 $(c, d)$: - $a < c$; - $a = c$ 且 $b < d$。

说明/提示

### 限制条件 - 所有输入均为整数。 - $1 \leq N \leq 2 \times 10^5$ - $1 \leq K \leq 1.5 \times 10^9$ - $0 \leq x_i, y_i \leq 10^9$ - 需要枚举的整数对不会超过 $4 \times 10^5$ 组。 ### 样例解释 1 满足条件的整数对共有 $9$ 组,请按输出格式输出:$(1,2),(1,3),(1,4),(2,3),(2,4),(2,5),(3,4),(3,5),(5,6)$。 ### 样例解释 2 也有可能不存在满足条件的整数对,此时输出 $0$。 ### 样例解释 3 也可能存在 $x_i = x_j$ 且 $y_i = y_j$ 的整数对 $(i, j)$($i < j$)。 由 ChatGPT 4.1 翻译