切割子序列(cut)
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
读写要求
本题采用文件读写,请在提交代码时使用正确的文件读写方式,否则会导致 RE
输入:cut.in
输出:cut.out
题目描述
给你一个序列 ,长度为 .
你需要找到一个长度为 的序列 使得它能被最多次数地从 中切割。
一次切割的意思是你需要对于 序列中所有 ,在 中找到一个跟它相同的数,并将其移除。
举例,如果 ,,那么一种可行的方案是 ,这个子序列可以被切割两次。
- 第一次切割,你可以选择 $[1, \underline{\textbf{2}}, 3, 2, 4, \underline{\textbf{3}}, \underline{\textbf{1}}]$,移除完后 ;
- 第二次切割,你可以选择 $s=[\underline{\textbf{1}},\underline{\textbf{3}},\underline{\textbf{2}},4]$,移除完后 。
你的任务是找到一个序列 ,能最多次数地从 中切割它。如果有多个可行的方案,只需输出任意一种。
输入格式
第一行两个整数 ,表示 序列的长度和 序列的长度。
接下来一行 个整数 。
输出格式
输出 个整数,表示你找到的序列 使得能被切割的次数最大。如果有多个方案,只需输出任意一种。
样例解释
第一个样例在样例描述中已经说过。
第二个样例中可行的方案只有 和它的全排列。可以证明你不能找到其它长度为 的序列 使得能被切割两次
第三个样例中 可以被切割五次。
输入输出样例
7 3
1 2 3 2 4 3 1
1 2 3
10 4
1 3 1 3 10 3 7 7 12 3
7 3 1 3
15 2
1 2 1 1 1 2 1 1 2 1 2 1 1 1 1
1 1