A5084 最长不下降子序列(输出方案版)

暂无评定 传统题 动态规划 上传者
时间限制2000ms
内存限制256MiB
通过 / 提交2/12

A5084最长不下降子序列(输出方案版)

暂无评定 传统题 动态规划 上传者
时间限制2000ms
内存限制256MiB
通过 / 提交2/12

题目描述

给定一个长度为 nn 的整数序列 a1,a2,…,ana_1,a_2,\ldots,a_n,请找出它的最长不下降子序列,输出长度和任意一组方案。

即选出下标 1≤i1<i2<⋯<ik≤n1\le i_1<i_2<\cdots<i_k\le n,使得

ai1≤ai2≤⋯≤aika_{i_1}\le a_{i_2}\le\cdots\le a_{i_k}

并使 kk 尽可能大。子序列可以不连续,但必须保持原序列中的先后顺序。

输入格式

第一行输入一个整数 nn。

第二行输入 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n。

输出格式

第一行输出一个整数 kk,表示最长不下降子序列的长度。

第二行输出 kk 个整数,表示你选出的子序列的数值,而不是下标。

若有多组最优方案,输出任意一组均可。

样例 1

6
3 1 2 2 5 4
4
1 2 2 4

样例 1 说明

选取原序列第 2,3,4,62,3,4,6 个数,得到 1 2 2 4,长度为 44。

输出 1 2 2 5 也是正确方案。注意,相等的数可以连续选入。

样例 2

5
-1 -3 -5 -7 -9
1
-5

样例 2 说明

序列严格下降,最长不下降子序列的长度为 11,选取任意一个数均可。

数据范围与评分

对于所有数据,1≤n≤2000001\le n\le200000,−109≤ai≤109-10^9\le a_i\le10^9。

测试组 分值 额外限制
1 20 n <= 20
2 30 n <= 2000
3 50 无

各组独立计分,只有通过一组内的所有测试点,才能获得该组分数。