#CF2001D. 最长最大最小子序列
最长最大最小子序列
D. 最长最大最小子序列
- 每个测试的时间限制:2 秒
- 内存限制:256 MB
题目描述
给定一个整数序列 。
设 是 的所有不含重复元素的非空子序列的集合。
你的目标是找到 中最长的序列。
如果有多个最长的序列,则选择将奇数位置上的项乘以 后,字典序最小的那个序列。
例如,给定 ,则
$S = \{[1],[2],[3],[2,1],[2,3],[3,1],[3,2],[2,3,1],[3,2,1]\}$。
其中最长的序列是 和 ,
而 是答案,因为 的字典序小于 。
定义说明
- 子序列:序列 是序列 的子序列,如果 可以通过删除 中的若干(可能为零或全部)元素得到。
- 字典序:序列 字典序小于序列 ,当且仅当以下之一成立:
- 是 的前缀,且 ;
- 在 和 第一个不同的位置上, 的元素小于 的对应元素。
输入
每个测试包含多个测试用例。
第一行输入一个整数 ()——测试用例数。
每个测试用例的格式如下:
- 第一行:整数 ()——序列 的长度。
- 第二行: 个整数 ()。
保证所有测试用例的 之和不超过 。
输出
对于每个测试用例,按以下格式输出答案:
- 第一行:一个整数 ,表示答案序列的长度。
- 第二行: 个整数 ,表示答案序列。
示例
输入
4
4
3 2 1 3
4
1 1 1 1
9
3 2 1 3 2 1 3 2 1
1
1
输出
3
3 2 1
1
1
3
3 1 2
1
1
另一个示例
输入
10
2
1 2
10
5 2 1 7 9 7 2 5 5 2
2
1 2
10
2 2 8 7 7 9 8 1 9 6
9
9 1 7 5 8 5 6 4 1
3
3 3 3
6
1 6 4 4 6 5
6
3 4 4 5 3 3
10
4 1 4 5 4 5 10 1 5 1
7
1 2 1 3 2 4 6
输出
2
1 2
5
5 1 9 7 2
2
1 2
6
2 7 9 8 1 6
7
9 1 7 5 8 6 4
1
3
4
1 4 6 5
3
4 5 3
4
5 4 10 1
5
2 1 3 4 6
说明
第一个示例():
$S = \{[1],[2],[3],[1,3],[2,1],[2,3],[3,1],[3,2],[2,1,3],[3,2,1]\}$。
其中最长的序列是 和 ,
的字典序小于 ,所以答案是 。
第二个示例():
,所以答案是 。