题意:开始有 n个数,然后如果最左边有相同的连续的数x我们要合并,合并之后之前两个数删除然后插入x+1,然后直到不能再合并,下标是左边那个的下标,输出最后结果。
分析:暴力模拟就好了,想清楚了,代码贼短,自己写的太sb了。
代码:
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6+5;
int n,k,x,a[N];
int main(){
scanf("%d",&n);
for (int i=1; i<=n; i++) {
cin>>x;
while (x==a[k]) k--,x++;
k++;
a[k]=x;
}
printf("%d\n",k);
for (int i=1; i<=k; i++)
cout<<a[i]<<" ";
return 0;
}