➤ 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!!
