➤ Problem Link : 660C. Hard Process
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; int main() { int n,k; cin>>n>>k; bool arr[n]; for(int i=0;i<n;i++) cin>>arr[i]; int cnt=0; int ot=0; int i=0,j=0,m=0; unordered_map<int,int > left,right; int prev=-1; int mx=0; for(j=0;j<n;j++) { if(!arr[j]) { cnt++; left[j]=ot; if(prev!=-1) right[prev]=ot; prev=j; ot=0; if(cnt==1) i=j; if(cnt==k) m=j; } else { ot++; mx=max(ot,mx); } } if(k==0) { cout<<mx<<"\n"; for(int i=0;i<n;i++) cout<<arr[i]<<" "; return 0; } right[prev]=ot; if(cnt<=k) { cout<<n<<endl; for(int i=0;i<n;i++) cout<<"1 "; return 0; } j=m; int ans=-1,l=-1,r=-1; int val; while(i<n) { if(j==n) val=j-i; else val=left[i]+right[j]+j-i+1; if(val>ans) { ans=val; if(j!=n) { l=i; r=j; } else { l=i; r=n-1; break; } } if(j==n) break; i++; while(i<n && arr[i]) i++; j++; while(j<n && arr[j]) j++; } cout<<ans<<"\n"; for(int i=0;i<n;i++) { if(i>=l && i<=r) cout<<"1 "; else cout<<arr[i]<<" "; } }
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!