CF926E Merge Equal Elements
题目描述
给定一个正整数序列 $a_{1},a_{2},...,a_{n}$。
你可以进行如下操作:找到一对相等的相邻元素。如果存在多对这样的元素,选择最左边的一对(即下标最小的一对)。假设这两个整数等于 $x$,则将它们都删除,并在它们的位置插入一个整数 $x+1$。这样,每次操作后序列的长度减少 $1$。
当序列中不存在相等的相邻元素时,停止操作。
例如,初始序列为 $[5,2,1,1,2,2]$,第一次操作后得到 $[5,2,2,2,2]$,第二次操作后得到 $[5,3,2,2]$,第三次操作后得到 $[5,3,3]$,第四次操作后得到 $[5,4]$。此时序列中已没有相等的相邻元素,操作结束。
请你输出最终的序列。
输入格式
第一行包含一个整数 $n$($2 \leq n \leq 2 \cdot 10^{5}$),表示序列的长度。
第二行包含 $n$ 个整数 $a_{1},a_{2},...,a_{n}$($1 \leq a_{i} \leq 10^{9}$)。
输出格式
第一行输出一个整数 $k$,表示操作结束后序列的长度。
第二行输出 $k$ 个整数,表示操作结束后的序列。
说明/提示
第一个样例已在题目描述中给出。
第二个样例,初始序列为 $[1000000000,1000000000,1000000000,1000000000]$。第一次操作后序列变为 $[1000000001,1000000000,1000000000]$。第二次操作后序列变为 $[1000000001,1000000001]$。第三次操作后序列变为 $[1000000002]$。
第三个样例,初始序列中没有相等的相邻元素,因此序列不变。
由 ChatGPT 4.1 翻译