#P1567. 最长子序列(subsequence)

最长子序列(subsequence)

题目描述

小 C 有一个长度为 nn 的序列 AA

小 C 认为一个子序列是好的当且仅当该子序列中的元素互不相同

小 C 想要知道序列 AA 中最长的好的子序列的长度。

同时小 C 还想要找出序列 AA 中最长的好的子序列中字典序最小的那一个,这里的字典序与经典的字典序定义不同,需要将下标位置为奇数的数字乘以 1-1 后再进行比较。例如序列 [3,2,1][3,2,1] 的字典序在该定义下是小于 [2,2,1][2,2,1] 的。

输入格式

输入的第一行包含一个整数 nn

接下来一行包含 nn 个整数,第 ii 个整数表示 AiA_i

输出格式

输出共两行。

第一行包含一个整数,表示序列 AA 中最长的好的子序列的长度。

第二行包含若干个整数,表示字典序最小的最长的好的子序列。

样例输入 #1

4
3 2 1 3

样例输出 #1

3
3 2 1

样例输入 #2

10
5 2 1 7 9 7 2 5 5 2

样例输出 #2

5
5 1 9 7 2

数据范围

样例 1 解释

最长的好的子序列共有 [3,2,1],[2,1,3][3,2,1],[2,1,3] 两种,其中 [3,2,1][3,2,1] 字典序更小。

  • 对于 20%20\% 的数据,保证 n20n \le 20
  • 对于 40%40\% 的数据,保证 n500n\le 500
  • 对于 80%80\% 的数据,保证 n5000n\le 5000
  • 对于 100%100\% 的数据,保证 1n3×1051\le n\le 3\times 10^51Ain1\le A_i\le n