#SX0007. 2025【T3】回形座位(seat)(自测数据)

    ID: 5664 传统题 文件IO:seat 1000ms 512MiB 尝试: 6 已通过: 2 难度: 2 上传者: 标签>2025山西小学生编程未来星

2025【T3】回形座位(seat)(自测数据)

题目描述

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

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

  1. 扫描方式:从矩阵左上角(第一行第一列)开始,按“回”字形顺序遍历整个矩阵——先从左到右遍历第一行,再从上到下遍历最后一列剩余部分,接着从右到左遍历最后一行剩余部分,然后从下到上遍历第一列剩余部分;完成最外层后,继续按相同规则遍历内层矩阵,直至所有座位遍历完毕。

  2. 记录规则:用一系列数字交替表示连续的男生人数和女生人数,第一个数字一定代表男生人数(例如:2,3,1,3 表示按顺序先后出现 2 个男生,3 个女生,1 个男生,3 个女生)。

例如:

在长度为3×3 的座位矩阵中,男女生记录序列为:2,3,1,3,座位最终的入座顺序和结果为: 图一

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

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

输入格式

从文件 seat.in 中读入数据。
第一行包含两个整数 K 和 N,表示记录序列的长度,矩阵的行数和列数。
第二行包含 K 个正整数,用空格分隔,表示男女生记录序列。

输出格式

输出到文件 seat.out 中。
输出 N 行,每行 N 个整数(0 或 1),表示还原后的座位矩阵,数字之间用空格分隔。

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

样例解释 #1

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

数据范围

  • 对于 10% 的数据,保证 N = 1;
  • 对于另外 10% 的数据,保证 N = 2;
  • 对于另外 10% 的数据,保证男女生记录序列只包含男生。
  • 对于另外 10% 的数据,保证 K = 2。
  • 对于另外 20% 的数据,保证 K = N × N 且 男女生记录序列都为 1。
  • 对于 100% 的数据,保证 1 ≤ N ≤ 100, 1 ≤ K ≤ N × N,男女生记录序列之和为 N × N。

题目来源

2025 山西省小学生编程未来星启航计划