#P12644. 「OOI 2021 Day 1」矩阵排序

「OOI 2021 Day 1」矩阵排序

题目描述

给定两个大小为 n×mn \times m 的表格 AABB

我们将“按列排序”定义为以下操作:选择一列,并根据该列的值对所有行进行排序,从包含较小值的行到包含较大值的行。如果两行在该列的值相同,则它们的相对顺序保持不变(这种排序称为「稳定排序」)。

这种按列排序的功能几乎可以在任何用于处理表格的办公应用程序中找到。皮特正在使用其中一款应用程序,他打开了表格 AA。他希望通过零次或多次按列排序操作,将表格 AA 转换为表格 BB

请确定他是否能做到这一点,如果可以,请为他提供一个操作算法——即按列排序的列序号序列。注意,不需要最小化操作次数。

输入格式

第一行包含两个整数 nnmm (1n,m2000)(1 \leq n, m \leq 2000),表示表格的尺寸。

接下来的 nn 行,每行包含 mm 个整数 ai,ja_{i,j} (1ai,jn)(1 \leq a_{i,j} \leq n),定义表格 AA

再接下来的 nn 行,以相同格式定义表格 BB,每行包含 mm 个整数 bi,jb_{i,j} (1bi,jn)(1 \leq b_{i,j} \leq n)

输出格式

如果无法通过排序将表格 AA 转换为表格 BB,则输出 -1

否则,第一行输出一个整数 kk (0k5000)(0 \leq k \leq 5000),表示需要进行的排序次数。

接下来一行输出 kk 个整数 c1,,ckc_1, \ldots, c_k (1cim)(1 \leq c_i \leq m),表示需要按其排序的列序号。

可以证明,如果皮特能够实现目标,那么 50005000 次操作足够完成。

2 2
2 2
1 2
1 2
2 2

1
1

3 3
2 3 2
1 3 3
1 1 2
1 1 2
1 3 3
2 3 2

2
1 2

2 2
1 1
2 1
2 1
1 1

-1

数据范围与提示

详细子任务附加限制及分值如下表所示。其中子任务 00 是样例。

子任务 分值 附加限制 子任务依赖 备注
11 66 n6n \leq 6m6m \leq 6 00
22 44 表格 AABB 的所有列均为 11nn 的排列
33 1616 n500n \leq 500m6m \leq 6 0,10, 1
44 1010 n100n \leq 100m100m \leq 100 0,10, 1
55 1515 n500n \leq 500m500m \leq 500 0,1,3,40, 1, 3, 4
66 1818 n1000n \leq 1000m1000m \leq 1000 0,1,3,4,50, 1, 3, 4, 5
77 3131 n2000n \leq 2000m2000m \leq 2000 060 \sim 6