#include "bits/stdc++.h" using namespace std; #define rep(i,n) for(int (i)=0;(i)<(int)(n);++(i)) #define rer(i,l,u) for(int (i)=(int)(l);(i)<=(int)(u);++(i)) #define reu(i,l,u) for(int (i)=(int)(l);(i)<(int)(u);++(i)) static const int INF = 0x3f3f3f3f; static const long long INFL = 0x3f3f3f3f3f3f3f3fLL; typedef vector vi; typedef pair pii; typedef vector > vpii; typedef long long ll; template static void amin(T &x, U y) { if (y < x) x = y; } template static void amax(T &x, U y) { if (x < y) x = y; } int main() { int N; int K; while (~scanf("%d%d", &N, &K)) { char buf[500001]; scanf("%s", buf); string A = buf; A += buf; double lo = 0, up = 1; rep(kk, 35) { double mid = (lo + up) * .5; double curSumR = 0; double curSumL = 0, minSumL = 1e99; double maxSum = -1e99; int li = 0; rep(ri, N * 2) { for (; li + K <= ri; ++ li) { amin(minSumL, curSumL); curSumL += (A[li] - '0') - mid; } amax(maxSum, curSumR - minSumL); curSumR += (A[ri] - '0') - mid; } (maxSum >= 0 ? lo : up) = mid; } double ans = (lo + up) * .5; printf("%.10f\n", ans); } return 0; }