CF1500C Matrix Sorting
题目描述
给定两个大小为 $n \times m$ 的表格 $A$ 和 $B$。
我们定义按列排序如下:选择一列,然后根据该列的值对所有行进行排序,从值最小的行到值最大的行。如果在该列中有两行或多行的值相等,则它们之间的相对顺序保持不变(这种排序算法称为稳定排序)。
你可以在许多办公软件的电子表格中找到这种按列排序的行为。Petya 现在正在使用其中一个软件,他当前打开了表格 $A$。他希望通过零次或多次按列排序操作,将表格 $A$ 变换为表格 $B$。
请判断是否可以做到。如果可以,请给出一组按列排序的操作序列。注意,你不需要使排序次数最少。
输入格式
第一行包含两个整数 $n$ 和 $m$($1 \le n, m \le 1500$),表示表格的大小。
接下来的 $n$ 行,每行包含 $m$ 个整数 $a_{i,j}$($1 \le a_{i, j} \le n$),表示表格 $A$ 的元素。
接下来的 $n$ 行,每行包含 $m$ 个整数 $b_{i,j}$($1 \le b_{i, j} \le n$),表示表格 $B$ 的元素。
输出格式
如果无法将 $A$ 变换为 $B$,输出 $-1$。
否则,首先输出一个整数 $k$($0 \le k \le 5000$),表示你方案中的排序次数。
然后输出 $k$ 个整数 $c_1, \ldots, c_k$($1 \le c_i \le m$),表示 Petya 需要依次按这些列进行排序。
可以证明,如果存在解,则一定存在不超过 $5000$ 次排序的方案。
说明/提示
考虑第二个样例。第一次按第一列排序后,表格变为
$$
\begin{matrix}
1 & 3 & 3 \\
1 & 1 & 2 \\
2 & 3 & 2
\end{matrix}
$$
第二次按第二列排序后,表格变为
$$
\begin{matrix}
1 & 1 & 2 \\
1 & 3 & 3 \\
2 & 3 & 2
\end{matrix}
$$
这就是我们需要的结果。
在第三个测试中,无论如何排序都不会改变表格,因为各列已经有序。
由 ChatGPT 4.1 翻译