题目背景
上回说到,由于就业形势的严峻,超级飞侠不得不送起了外卖。
题目描述
为了响应题目要求
为了提高市民的生活幸福质数,C城 决定建造一个 n×m 的网格状美食街,网格上的每个点都是一家店铺。
超级飞侠希望找出一条 优秀的取餐路线,以便更高效地送出外卖。请你确定路线是否存在,并给每个店铺设置编号,他会按照编号升序经过所有店铺。
定义满足以下条件的路线为 优秀的取餐路线:
- 路线经过所有店铺 至少一次;
- 店铺编号为 1 到 n×m 的整数,互不重复,即构成一个排列;
- 对于任意编号 i (1≤i≤n×m−1),编号为 i 和 i+1 的两个店铺位于 同一行或同一列;
- 对于任意编号 i (1≤i≤n×m−1),从编号 i 的店铺出发,沿东、南、西、北中的某一方向直线前进(若走到边界则启动加速模式,花费 1 秒瞬移至该方向的反方向边界继续前进),到达编号 i+1 的店铺所需时间恰好为 i 秒(每移动一格花费 1 秒)。
输入格式
输入包含一行两个整数 n,m $(1 \leq n, m \leq 2 \times 10 ^ 5, 1 \leq n \times m \leq 2 \times 10 ^ 5)$。
输出格式
如果不存在满足条件的路线,输出一个整数 −1。
如果存在满足条件的路线,输出 n 行,每行 m 个整数 ai,j(1≤ai,j≤n×m),代表你为超级飞侠构造的店铺编号方案。
注意:若存在多种可行方案,输出 任意一种 即可。
4 5
1 9 14 15 8
2 10 3 16 17
20 19 4 5 18
12 11 13 6 7
4 6
-1
3 9
-1
说明
对于样例 1,超级飞侠的路线如下(ai,j 表示坐标在第 i 行第 j 列的店铺):
- 从编号 1(a1,1) 开始;
- 编号 1(a1,1) 往南走1秒 编号 2(a2,1);
- 编号 2(a2,1) 往东走2秒 编号 3(a2,3);
- 编号 3(a2,3) 往北走1秒 北方边界 (a1,3) 消耗1秒瞬移 反方向的南方边界 (a4,3) 往北走1秒 编号 4(a3,3),即往北走 3 秒到达编号 4;
- …
为了便于你更好理解,此处再给出编号 12(a4,1) 往东走 12 秒到达编号 13(a4,3) 的过程:
编号 12(a4,1) 往东走4秒 东方边界 (a4,5) 消耗1秒瞬移 反方向的西方边界 (a4,1) 往东走4秒 东方边界 (a4,5) 消耗1秒瞬移 反方向的西方边界 (a4,1) 往东走2秒 编号 13(a4,3)。
方案不唯一。