atcoder#ABC234H. [ABC234Ex] Enumerate Pairs

[ABC234Ex] Enumerate Pairs

题目描述

1 1 から N N までの番号のついた N N 個の整数の組 (xi,yi) (x_i,y_i) と、整数 K K が与えられます。
以下の条件を満たす整数の組 (p,q) (p,q) を「出力」で指定する形式に従ってすべて列挙してください。

  • 1  p < q  N 1\ \le\ p\ <\ q\ \le\ N
  • (xpxq)2+(ypyq)2  K \sqrt{(x_p-x_q)^2+(y_p-y_q)^2}\ \le\ K

ただし、そのような整数の組が 4 × 105 4\ \times\ 10^5 組以下であることは保証されます。

输入格式

入力は以下の形式で標準入力から与えられる。

N N K K x1 x_1 y1 y_1 x2 x_2 y2 y_2 \vdots xN x_N yN y_N

输出格式

以下の形式で出力せよ。

M M p1 p_1 q1 q_1 p2 p_2 q2 q_2 \vdots pM p_M qM q_M

まず、 1 1 行目に整数 M M を出力せよ。 M M は出力する整数の組の個数を表す。
続く M M 行に、列挙するべき整数の組 (pi,qi) (p_i,q_i) 1 1 行に 1 1 つずつ空白区切りで、 辞書順で 出力せよ。
ただし、整数の組 (a,b),(c,d) (a,b),(c,d) が以下の条件のどちらかを満たすとき、またその時に限り、 整数の組 (a,b) (a,b) が整数の組 (c,d) (c,d) より辞書順で前であるとする。

  • a < c a\ <\ c である。
  • a=c a=c であり、かつ b < d b\ <\ d である。

题目大意

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

6 5
2 0
2 2
3 4
0 0
5 5
8 3
9
1 2
1 3
1 4
2 3
2 4
2 5
3 4
3 5
5 6
2 1414213562
0 0
1000000000 1000000000
0
10 150
300 300
300 400
300 500
400 300
400 400
400 400
400 500
500 300
500 400
500 500
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  N  2 × 105 1\ \le\ N\ \le\ 2\ \times\ 10^5
  • 1  K  1.5 × 109 1\ \le\ K\ \le\ 1.5\ \times\ 10^9
  • 0  xi,yi  109 0\ \le\ x_i,y_i\ \le\ 10^9
  • 列挙すべき整数の組は 4 × 105 4\ \times\ 10^5 組以下である

Sample Explanation 1

条件を満たす整数の組は以下の 9 9 個なので、これを出力形式に従って出力して下さい。 $ (1,2),(1,3),(1,4),(2,3),(2,4),(2,5),(3,4),(3,5),(5,6) $

Sample Explanation 2

条件を満たす整数の組が 0 0 組である場合もあります。

Sample Explanation 3

xi=xj x_i=x_j かつ yi=yj y_i=y_j であるような整数の組 (i,j) (i,j) (i < j i\ <\ j ) が存在する場合もあります。