A94831.LCIS
提高+/省选-
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
如果对于所有 i<n,都有 ai<ai+1,则称序列 a1,a2,…,an 为递增序列。
如果存在一组下标 1≤i1<i2<…<ik≤n,使得 aij=sj,则称序列 s1,s2,…,sk 是序列 a1,a2,…,an 的子序列。换句话说,序列 s 可以通过从序列 a 中删除某些元素得到。
现在给定两个整数序列。请你找出它们的最长公共递增子序列,即长度最大的递增序列,且该序列同时是两个序列的子序列。
输入格式
第一行包含一个整数 n(1≤n≤500),表示第一个序列的长度。
第二行包含 n 个用空格分隔的整数,范围为 [0,109],表示第一个序列的元素。
第三行包含一个整数 m(1≤m≤500),表示第二个序列的长度。
第四行包含 m 个用空格分隔的整数,范围为 [0,109],表示第二个序列的元素。
输出格式
第一行输出 k,即最长公共递增子序列的长度。
第二行输出该子序列本身,元素之间用空格分隔。如果有多种方案,输出任意一种均可。
输入输出样例
输入#1
7 2 3 1 6 5 4 6 4 1 3 5 6
输出#1
3 3 5 6
输入#2
5 1 2 0 2 1 3 1 0 1
输出#2
2 0 1