U635896 [自制] P14597 加强版

题目背景

显然可以加强,于是这道题就被加强了。 但是不确定方案是否唯一,所以这里还是有一个 Special Judge。 既然都写 Special Judge 了,就写一个部分分吧。 同样是第一问 $ 60 \% $ 分数,第二问在第一问基础上额外有 $ 40 \% $ 分数。 注意:如果你输出了第一问的答案,那么你必须输出第二问的答案。即使你不知道怎么做,也请在第二行输出若干个整数,整数的数量不能小于第一问的答案。 会下发 ``` checker.cpp ``` 以供自测,使用方法见[这里](https://help.luogu.com.cn/manual/luogu/problem/special-judge)。当然这个 Special Judge 可能有不完善的地方,欢迎大家私信我修改。

题目描述

题目描述来自原题 [P14597](https://www.luogu.com.cn/problem/P14597)。 给定长度为 $n$ 的序列 $a_1,\ldots,a_n$。 你可以进行如下的操作: > **操作** > > 设当前序列为 $[b_1,b_2,\ldots,b_m]$。 > > 选择 $1\le i\lt m$,将序列变为 $[b_1,b_2,\ldots,b_{i-1},b_i+b_{i+1},b_{i+2},\ldots,b_m]$。 > 目标是让 $a$ **不降**,即 $a_{i}\le a_{i+1}$。求出这样的 $a$ 的最大长度,并构造一个合法的 $a$。

输入格式

第一行,一个正整数 $n$($n = 5 \times 10 ^ 5$)。 第二行,$n$ 个正整数 $a_i$($1\le a_i\le 10^9$)。

输出格式

第一行,一个正整数 $m$,表示最终序列的最长长度。 第二行,$m$ 个正整数,表示操作后得到的序列。

说明/提示

### 样例解释 **样例一解释**:$[\textcolor{red}{3,2},6,3,3,8]\to [5,6,\textcolor{red}{3,3},8]\to [5,6,6,8]$。 数据范围均为 $ n = 5 \times 10 ^ 5 , 1 \le a_i \le 10 ^ 9$。