给你一个01串,我们定义这个串的咸鱼值,是最长的全1串。现在你最多可以使用K次咸鱼魔法,每次魔法,你可以使得一个位置翻转(0变成1,1变成0)。问你这个串的咸鱼值最多是多少。
INPUT
第一行两个整数N,K。表示串的长度和可以施展咸鱼魔法的次数。(N,K<=300000)第二行N个01整数。
OUTPUT
输出答案。
SAMPLE INPUT
10 21 0 0 1 0 1 0 1 0 1
SAMPLE OUTPUT
5
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
char a[300001];
int pos[300001];
int main()
{
int n,k;
int ant;
while(~scanf ("%d %d",&n,&k))
{
for(int i=0; i<n; i++)
{
getchar();
scanf("%c",&a[i]);
}
ant = 0;
pos[ant++] = 0;
for (int i = 0 ; i < n ; i++)
if (a[i] == '0')
pos[ant++] = i+1;
pos[ant++] = n+1;
if (k >= ant - 1)
{
printf ("%d\n",n);
continue;
}
int ans = 0;
for (int i = k + 1 ; i < ant ; i++)
{
ans = max (ans , pos[i] - pos[i-k-1] - 1);
}
printf ("%d\n",ans);
}
return 0;
}