#include <bits/stdc++.h>
using namespace std;
int n,k,num=0;
vector<int> room;
string tmp;
bool check(int x){
for (int i=1;i<=n;i++){
if (tmp[i-1]=='1') continue;
if (room[min(i+x,n)]-room[max(i-x,1)-1]>=k+1) {return true;}
}
return false;
}
int main() {
cin>>n>>k;
cin>>tmp;
room.push_back(0);
for (int i=0;i<n;i++){
if (tmp[i]=='0') num++;
room.push_back(num);
}
int l=0,r=n,ans=0;
while(l<=r){
// cout<<l<<" "<<r<<endl;
int mid=(l+r)>>1;
if (check(mid)) ans=mid,r=mid-1;
else l=mid+1;
}
cout<<ans;
return 0;
}
[Codeforces 645C] Enduring Exodus
最新推荐文章于 2024-07-24 22:13:06 发布