#XS2025T3. 回形座位

回形座位

题目描述

班主任老师在给你的班级排座位。每个教室可以看作是一个 N×NN \times N 的座位矩阵,每个座位用 0011 表示:00 代表男生,11 代表女生。

现在有同学按照以下规则,记录了这个教室的座位信息:

  1. 扫描方式:从矩阵左上角(第一行第一列)开始,按“回”字形顺序遍历整个矩阵——先从左到右遍历第一行,再从上到下遍历最后一列剩余部分,接着从右到左遍历最后一行剩余部分,然后从下到上遍历第一列剩余部分;完成最外层后,继续按相同规则遍历内层矩阵,直至所有座位遍历完毕。
  2. 记录规则:用一系列数字交替表示连续的男生人数和女生人数,第一个数字一定代表男生人数(例如:2 3 1 3 表示按顺序先后出现 22 个男生,33 个女生,11 个男生,33 个女生)。

image1

现在给定这个记录序列,请你还原出原始的 N×NN \times N 座位矩阵。

数据保证:记录序列中所有数字之和等于 N×NN \times N,且序列严格交替对应男生和女生的连续人数。

输入格式

从文件 seat.in\textit{\textbf{seat.in}} 中读入数据。

第一行包含两个整数 KKNN,分别表示记录序列的长度,矩阵的行数和列数。

第二行包含 KK 个正整数,用空格分隔,表示男女生记录序列。

输出格式

输出到文件 seat.out\textit{\textbf{seat.out}} 中。

输出 NN 行,每行 NN 个整数(0011),表示还原后的座位矩阵,数字之间用空格分隔。

样例

3 3
3 3 3
0 0 0
0 0 1
0 1 1

样例11解释

  • 遍历顺序:$(1,1) \to (1,2) \to (1,3) \to (2,3) \to (3,3) \to (3,2) \to (3,1) \to (2,1) \to (2,2)$
  • 记录序列解析:
    1. 第一个数字 33:连续 33 个男生(对应遍历前 33 个位置:(1,1),(1,2),(1,3)(1,1), (1,2), (1,3));
    2. 第二个数字 33:连续 33 个女生(对应接下来 33 个位置:(2,3),(3,3),(3,2)(2,3), (3,3), (3,2));
    3. 第三个数字 33:连续 33 个男生(对应最后 33 个位置:(3,1),(2,1),(2,2)(3,1), (2,1), (2,2))。

数据范围

  • 对于 10%10\% 的数据,保证 N=1N = 1
  • 对于另外 10%10\% 的数据,保证 N=2N = 2
  • 对于另外 10%10\% 的数据,保证男女生记录序列只包含男生。
  • 对于另外 10%10\% 的数据,保证 K=2K = 2
  • 对于另外 20%20\% 的数据,保证 K=N×NK = N \times N 且男女生记录序列都为 11
  • 对于 100%100\% 的数据,保证 1N100,1KN×N1 \le N \le 100, 1 \le K \le N \times N,男女生记录序列之和为 N×NN \times N