#include #define int long long //#define USE_FREOPEN //#define MUL_TEST #define FILENAME "sapphire" using namespace std; constexpr double eps = 1e-6; int n,k; string s; void solve() { cin >> n >> k >> s; s = s + s; auto chk = [&](double x) -> bool { vector sa(2 * n + 1,0.0); for (int i = 0; i < 2 * n; i++) { sa[i + 1] = sa[i] + (s[i] == '1' ? 1.0 : 0.0) - x; } deque q; for (int i = 1; i <= 2 * n; i++) { if (i >= k) { while (q.size() && sa[q.back()] >= sa[i - k]) q.pop_back(); q.push_back(i - k); } while (q.size() && q.front() < max(i - n,0ll)) q.pop_front(); if (i >= k) { if (q.size()) { if (sa[i] - sa[q.front()] >= -1e-9) return 1; } } } return 0; }; double l = 0.0,r = 1.0; for (int i = 1; i <= 100; i++) { double mid = (l + r) / 2.0; if (chk(mid)) l = mid; else r = mid; } cout << setprecision(15) << r << '\n'; } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); #ifdef USE_FREOPEN freopen(FILENAME ".in","r",stdin); freopen(FILENAME ".out","w",stdout); #endif int _ = 1; #ifdef MUL_TEST cin >> _; #endif while (_--) solve(); _^=_; return 0^_^0; }