#AGC025D. [AGC025D] Choosing Points

[AGC025D] Choosing Points

题目描述

高橋君は平面上の点集合について研究しています。 高橋君にとって、座標平面上の点の集合 S S いい集合 であるとは、S S が以下の条件をともに満たすことを指します。

  • S S に属するどの 2 2 点間の距離も D1 \sqrt{D_1} でない。
  • S S に属するどの 2 2 点間の距離も D2 \sqrt{D_2} でない。

ただし、D1,D2 D_1,D_2 は高橋君の定めた正整数の定数です。

ここで、X X を座標平面上の格子点 (i,j) (i,j) であって 0  i,j < 2N 0\ ≦\ i,j\ <\ 2N を満たす点 (i,j) (i,j) 全体からなる集合としましょう。 研究者の高橋君は、D1,D2 D_1,D_2 をどのように選んでも、X X からうまく N2 N^2 個の点を選ぶことで、それらがいい集合をなすことを示しました。 しかし、実際にどのように選べばいい集合になるかは分かっていません。 そこで、高橋君の代わりに、X X のサイズ N2 N^2 の部分集合であって、いい集合となるものを見つけてください。

输入格式

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

N N D1 D_1 D2 D_2

输出格式

条件を満たすように選んだ相異なる N2 N^2 個の点を以下の形式で出力せよ。

x1 x_1 y1 y_1 x2 x_2 y2 y_2 : xN2 x_{N^2} yN2 y_{N^2}

ただし、(xi,yi) (x_i,y_i) は選んだ点の i i 番目の点を表し、xi,yi x_i,y_i は整数かつ 0  xi,yi < 2N 0\ ≦\ x_i,y_i\ <\ 2N を満たす必要がある。 また、点はどのような順番で出力しても構わず、解が複数ある場合は、いかなるものを出力しても構わないことに注意せよ。

题目大意

给定 n,D1,D2n, D_1,D_2 , 要求构造一个在 2n×2n2n\times 2n 的网格中选出 n2n^2 个点的方案, 使得任意两点间的距离不为 D1\sqrt {D_1}D2\sqrt {D_2}.

n300,D2×105n\leqslant 300, D\leqslant 2\times 10^5

2 1 2
0 0
0 2
2 0
2 2
3 1 5
0 0
0 2
0 4
1 1
1 3
1 5
2 0
2 2
2 4

提示

制約

  • 1  N  300 1\ ≦\ N\ ≦\ 300
  • 1  D1  2×105 1\ ≦\ D_1\ ≦\ 2×10^5
  • 1  D2  2×105 1\ ≦\ D_2\ ≦\ 2×10^5
  • 入力される値は全て整数である

Sample Explanation 1

この場合 2 2 点間の距離としてありうる値は 2 2 22 2\sqrt{2} のみであるから、確かに条件を満たします。