CodeForces 591C Median Smoothing(思維 模擬)
阿新 • • 發佈:2018-12-01
題目大意:
把每一個數換成由他以及相鄰的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; }