#include using namespace std; int n,k; string s; double pre[500005]; deque q; bool check(double mid) { for(int j=0;j<=2*n;j++) pre[j]=0.0; for(int j=0;j<2*n;j++) { int val=(s[j]=='1')?1:0; pre[j+1]=pre[j]+(val-mid); } q.clear(); for(int j=0;j<2*n;j++) { int now=j+1,ima=now-k; if(ima>=0) { while(!q.empty() && pre[q.back()]>=pre[ima]) q.pop_back(); q.push_back(ima); } int imi=now-n; if(imi<0) imi=0; while(!q.empty() && q.front()=k) if(!q.empty()) if(pre[now]-pre[q.front()]>=-1e-9) return 1; } return 0; } int main() { freopen("sapphire.in","r",stdin); freopen("sapphire.out","w",stdout); cin>>n>>k>>s; s+=s; double l=0.0,r=1.0; for(int _=1;_<=100;_++) { double mid=(l+r)/2; if(check(mid)) l=mid; else r=mid; } printf("%.15f",r); return 0; }