#CF2118E. 网格染色
网格染色
E. 网格染色
每次测试时间限制:2 秒
内存限制:256 兆字节
有一个 的网格,初始时所有格子都是白色。你需要逐个将所有格子染色。当你染色一个格子后,所有已染色格子中距离它最远的那些格子会受到一次“惩罚”。
请找到一个染色顺序,使得任意一个格子的惩罚次数不超过 次。
注意: 和 都是奇数。
距离度量采用切比雪夫距离,当距离相同时,用曼哈顿距离打破平局。
形式化定义:对于一个格子 ,格子 比格子 更远,当且仅当以下条件之一成立:
- $\max(|x_1 - x_2|, |y_1 - y_2|) > \max(|x_1 - x_3|, |y_1 - y_3|)$
- $\max(|x_1 - x_2|, |y_1 - y_2|) = \max(|x_1 - x_3|, |y_1 - y_3|)$ 且 $|x_1 - x_2| + |y_1 - y_2| > |x_1 - x_3| + |y_1 - y_3|$
可以证明至少存在一种染色顺序。
输入
每个测试点包含多个测试用例。第一行一个整数 (),表示测试用例的数量。
每个测试用例一行,包含两个奇数 和 (),表示网格的行数和列数。
保证所有测试用例的 之和不超过 。
输出
对于每个测试用例,输出 行,第 行包含你第 步要染的格子坐标。如果有多解,输出任意一个即可。
示例输出中的空行只是为了提高可读性,你不需要输出空行。
样例输入
3
3 3
1 1
1 5
样例输出
2 1
2 3
2 2
1 1
3 2
3 3
3 1
1 3
1 2
1 1
1 2
1 4
1 5
1 1
1 3