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 翻译