atcoder#AGC025D. [AGC025D] Choosing Points

[AGC025D] Choosing Points

得分:800800

问题陈述

高桥正在研究平面上的点集。 高桥认为,一个坐标平面上的点集 SS 是一个良好集合,当 SS 满足以下两个条件:

  • 集合 SS 中任意两个点之间的距离不是 D1\sqrt{D_1}
  • 集合 SS 中任意两个点之间的距离不是 D2\sqrt{D_2}

这里,D1D_1D2D_2 是高桥指定的正整数常量。

XX 是一个点集,包含坐标为 (i,j)(i,j) 的点,其中 iijj 是整数,并满足 0i,j<2N0 \leq i,j < 2N

高桥已经证明,对于任何 D1D_1D2D_2 的选择,存在一种方法可以从 XX 中选择 N2N^2 个点,使得所选点形成一个良好集合。 然而,他不知道具体如何选择这些点以形成良好集合。 请找出一个大小为 N2N^2XX 的子集,使其形成良好集合。

约束条件

  • 1N3001 \leq N \leq 300
  • 1D12×1051 \leq D_1 \leq 2 \times 10^5
  • 1D22×1051 \leq D_2 \leq 2 \times 10^5
  • 输入中的所有值都是整数。

输入

输入通过标准输入以以下格式给出:

NN D1D_1 D2D_2

输出

打印 N2N^2 个不同的点,满足条件,格式如下:

x1x_1 y1y_1

x2x_2 y2y_2

:

xN2x_{N^2} yN2y_{N^2}

这里,(xi,yi)(x_i,y_i) 表示第 ii 个选定的点。 必须满足 0xi,yi<2N0 \leq x_i,y_i < 2N,并且它们必须是整数。 所选点可以以任何顺序打印。 如果有多个可能的解决方案,可以输出任意一个。

2 1 2
0 0
0 2
2 0
2 2

在这些点中,任意两个点之间的距离要么是 22,要么是 222\sqrt{2},因此满足条件。

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