题目大意:
把每一个数换成由他以及相邻的2个数,组成的中位数,序列的第一个最后一个是不变的
题解:
列出3位由0,1组成的序列,会发现,只有101,与010是不稳定的状态,其他的组合都是稳定的,那么我们每次操作只要找到101或者010的序列进行变换即可
101与010 最终的 结果是0在一起,1在一起,。而不会出现010,或者101的这样的情况
#include<bits/stdc++.h>
using namespace std;
int a[500010];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
int ans(0);
int l,r;
for(int i=0;i<n;i++)
{
l=i;r=i+1;
while(r<n && a[l]!=a[r])
{
l++;r++;
}
l=i+1;
r-=2;
int num(0);
while(l<=r)
{
a[l]=a[l-1];
a[r]=a[r+1];
l++;
r--;
num++;
}
ans=max(ans,num);
}
cout<<ans<<endl;
for(int i=0;i<n-1;i++)
cout<<a[i]<<' ';
cout<<a[n-1]<<endl;
return 0;
}