:i P1005 - 子序列1 - 铁一启智tyqzOJ

1005: 子序列1

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

给出一个由$n$个整数组成的序列,求出它的所有最长上升子序列,随后我们将所有属于任何最长上升子序列的数字作为一个集合并将其输出。

 集合对于重复元素算作一个元素。 

注意输出集合时应按元素值大小排序从小到大输出。

输入

第一行,一个整数$n$。 

第二行,$n$个整数,表示初始序列各元素值$A_i$。

输出

第一行,一个整数,表示所有属于任何最长上升子序列的数字组成的集合的长度。 

第二行,输出上述集合中的数。

样例输入 复制

#1
5
2 1 4 5 3

#2
6
8 35 16 35 47 47

#3
10
14 48 24 32 12 40 50 14 43 9

#4
10
44 38 25 28 3 11 17 32 27 24

样例输出 复制

#1
4
1 2 4 5

#2
4
8 16 35 47

#3
6
14 24 32 40 43 50

#4
6
3 11 17 24 27 32

提示

【样例解释】 

对于样例1: 

在该样例中,最长上升子序列有两个,分别是$[2,4,5]$和$[1,4,5]$ 

组成的集合为$[1,2,4,5]$,长度为$4$ 

【数据范围】 

$1 \leq n \leq 2000$

$1 \leq A_i \leq 10^6$