CF2111D Creating a Schedule
题目描述
新学期即将开始,需要为第一天制定课程表。学院共有 $n$ 个班级和 $m$ 个教室。已知每个班级在第一天恰好有 $6$ 节课,并且所有班级的第 $k$ 节课在同一时间进行。每节课都必须安排在一个教室中,并且同一时间同一个教室不能被多个班级使用。
每个教室都有自己的编号(至少为三位数),该编号除最后两位外的所有数字表示教室所在的楼层。例如,教室 $479$ 位于第 $4$ 层,教室 $31415$ 位于第 $314$ 层。楼层之间可以通过楼梯移动;对于任意楼层 $x>1$,可以下到 $x-1$ 层,也可以上到 $x+1$ 层;从第一层只能上到第二层;从第 $10^7$ 层(即最高层)只能下到第 $9999999$ 层。
院长办公室决定制定课程表,使得学生在楼层间的移动尽可能多,即所有班级在楼层间的总移动次数最大。当学生从一个楼层移动到另一个楼层时,总是选择最短路径。
例如,若 $n=2$,$m=4$,教室编号为 $[479, 290, 478, 293]$,则可以安排如下课程表:
$$
\begin{array}{c|cc}
\text{节次} & \text{班级1} & \text{班级2} \\
\hline
1 & 290 & 293 \\
2 & 478 & 479 \\
3 & 293 & 290 \\
4 & 479 & 478 \\
5 & 293 & 290 \\
6 & 479 & 478 \\
\end{array}
$$
在这样的安排下,两个班级每次都在第 $2$ 层和第 $4$ 层之间移动,总共会有 $20$ 次楼层间的移动。
请帮助院长办公室制定任意一种满足条件的课程表!
输入格式
每个测试点包含若干组测试数据。第一行包含一个整数 $t$($1 \le t \le 10^{3}$),表示测试数据组数。接下来是每组测试数据的描述。
每组测试数据的第一行包含两个整数 $n$ 和 $m$($1 \le n \le m \le 10^{5}$),分别表示班级数和可用教室数。
每组测试数据的第二行包含 $m$ 个整数 $a_i$($100 \le a_i < 10^9$),表示可用教室的编号。
输入的额外约束:
- 所有教室编号两两不同;
- 所有测试数据中 $m$ 的总和不超过 $10^5$。
输出格式
对于每组测试数据,输出 $n$ 行,每行 $6$ 个整数,表示第 $i$ 个班级每节课所在教室的编号。
每一节课的同一时间,每个教室最多只能被一个班级占用。
说明/提示
在第三组测试数据中,最大移动次数为 $50$。
由 ChatGPT 4.1 翻译