#P7686. [CEOI2005] Multi-key Sorting

[CEOI2005] Multi-key Sorting

题目描述

考虑一个包含行和列的表。列从 11CC 编号。为简单起见,表中的项目是由小写字母组成的字符串。
TuLi
您将获得对此类表的 Sort(kk) 操作:Sort(kk) 按照列 kk 中的值的顺序对表的行进行排序(而列的顺序不会改变)。排序是稳定的,即在第 kk 列中具有相等值的行保持其原始顺序。例如,将 Sort(22) 应用于表 11 会产生表 22
我们对此类排序操作的序列感兴趣。这些操作依次应用于同一个表。例如,应用序列 Sort(22);Sort(11) 到表 11 产生表 33
如果两个排序操作序列对于任何表具有相同的效果,则它们被称为等效。例如,Sort(22);Sort(22);Sort(11) 等效于 Sort(22);Sort(11)。但是,它不等效于 Sort(11);Sort(22),因为对表 11 的影响不同。

输入格式

第一行包含两个整数,CCNNCC 是列数,NN 是排序操作数。第二行包含 NN 个整数,kik_i。它定义了排序操作的顺序 Sort(k1k_1);\cdots; Sort(kNk_N)。

输出格式

第一行包含一个整数 MM,为输入的操作序列的最短等效排序操作序列的长度。第二行包含 MM 个整数,表示其最短操作序列。

4 6
1 2 1 2 3 3
3
1 2 3

提示

数据规模与约定

对于 100%100 \% 的数据,1C1061 \leq C \leq 10^61N3×1061 \leq N \leq 3×10^61kiC1 \leq k_i \leq C

题目说明

来源于 CENTRAL-EUROPEAN OLYMPIAD IN INFORMATICS 2005 的 Multi-key Sorting。
由 @求学的企鹅 翻译整理。