维护一个左右区间指针就可以。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<queue>
#include<stack>
using namespace std;
int main(){
int n,m;
int a[];
while(~scanf("%d%d",&n,&m)){
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
int l,r,k,rr,ll;
l=,r=,rr=-,ll=,k=;
while(r<=n){
if(rr-ll<r-l){
rr=r;
ll=l;
}
if(a[++r]==){
k++;
}
while(k>m){
if(a[l++]==){
k--;
}
}
}
printf("%d\n",rr-ll+);
for (int i = ll; i <= rr ; ++i)
{
/* code */
a[i]=;
}
for(int i=;i<=n;i++){
printf("%d ",a[i]);
}
}
return ;
}