Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define Size 500005
- int N;
- int s[Size];
- bool d[Size];
- int cnt = 0;
- void solve(){
- int i = 1,st = 1,tt;
- while(i<N-1){
- while(i<N-1 && d[i] != true){
- i++;
- }
- if(i>=N-1) return;
- tt = st = i;
- while(tt<N-1){
- if(d[tt] != true){
- break;
- }
- tt++;
- }
- tt--;
- if(st == tt){
- s[st] = s[st-1];
- cnt = max(cnt,1);
- }else{
- int dif = tt-st+1;
- if(s[st-1] == s[tt+1]){
- int ch = s[st-1];
- cnt = max(cnt, (dif+1)/2);
- for(int i = st;i<=tt;i++){
- s[i] = ch;
- }
- }else{
- int ch = s[st-1];
- cnt = max(cnt,dif);
- for(int i = st;i<=tt;i++){
- s[i] = ch;
- }
- }
- }
- i = tt+1;
- }
- }
- int main() {
- cin >> N;
- for(int i = 0;i<N;i++){
- scanf("%d",&s[i]);
- }
- memset(d,false,sizeof(d));
- for(int i = 1;i<N-1;i++){
- if(s[i-1] == s[i+1] && s[i] != s[i-1]){
- d[i] = true;
- }
- }
- solve();
- printf("%d\n",cnt);
- printf("%d",s[0]);
- for(int i = 1;i<N;i++) printf(" %d",s[i]);
- printf("\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement