[ABC234Ex] Enumerate Pairs

题意翻译

给你平面上 $N$ 个点的坐标,问你有多少对点的欧几里得距离 $\leqslant K$,按字典序从小到大输出它们。保证答案点对数不超过 $4\times10^5$。

题目描述

[problemUrl]: https://atcoder.jp/contests/abc234/tasks/abc234_h $ 1 $ から $ N $ までの番号のついた $ N $ 個の整数の組 $ (x_i,y_i) $ と、整数 $ K $ が与えられます。 以下の条件を満たす整数の組 $ (p,q) $ を「出力」で指定する形式に従ってすべて列挙してください。 - $ 1\ \le\ p\ <\ q\ \le\ N $ - $ \sqrt{(x_p-x_q)^2+(y_p-y_q)^2}\ \le\ 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 $ は出力する整数の組の個数を表す。 続く $ M $ 行に、列挙するべき整数の組 $ (p_i,q_i) $ を $ 1 $ 行に $ 1 $ つずつ空白区切りで、 **辞書順で** 出力せよ。 ただし、整数の組 $ (a,b),(c,d) $ が以下の条件のどちらかを満たすとき、またその時に限り、 整数の組 $ (a,b) $ が整数の組 $ (c,d) $ より辞書順で前であるとする。 - $ a\ <\ c $ である。 - $ a=c $ であり、かつ $ b\ <\ d $ である。

输入输出样例

输入样例 #1

6 5
2 0
2 2
3 4
0 0
5 5
8 3

输出样例 #1

9
1 2
1 3
1 4
2 3
2 4
2 5
3 4
3 5
5 6

输入样例 #2

2 1414213562
0 0
1000000000 1000000000

输出样例 #2

0

输入样例 #3

10 150
300 300
300 400
300 500
400 300
400 400
400 400
400 500
500 300
500 400
500 500

输出样例 #3

29
1 2
1 4
1 5
1 6
2 3
2 4
2 5
2 6
2 7
3 5
3 6
3 7
4 5
4 6
4 8
4 9
5 6
5 7
5 8
5 9
5 10
6 7
6 8
6 9
6 10
7 9
7 10
8 9
9 10

说明

### 制約 - 入力はすべて整数 - $ 1\ \le\ N\ \le\ 2\ \times\ 10^5 $ - $ 1\ \le\ K\ \le\ 1.5\ \times\ 10^9 $ - $ 0\ \le\ x_i,y_i\ \le\ 10^9 $ - 列挙すべき整数の組は $ 4\ \times\ 10^5 $ 組以下である ### Sample Explanation 1 条件を満たす整数の組は以下の $ 9 $ 個なので、これを出力形式に従って出力して下さい。 $ (1,2),(1,3),(1,4),(2,3),(2,4),(2,5),(3,4),(3,5),(5,6) $ ### Sample Explanation 2 条件を満たす整数の組が $ 0 $ 組である場合もあります。 ### Sample Explanation 3 $ x_i=x_j $ かつ $ y_i=y_j $ であるような整数の組 $ (i,j) $ ($ i\ <\ j $) が存在する場合もあります。