import sys from collections import deque def main(): N, K = map(int, sys.stdin.readline().split()) s = sys.stdin.readline().strip() A = [int(c) for c in s] duplicated = A + A low = 0.0 high = 1.0 eps = 1e-10 for _ in range(100): mid = (low + high) / 2 if check(duplicated, N, K, mid, eps): low = mid else: high = mid print("{0:.15f}".format(low)) def check(duplicated, N, K, x, eps): n = len(duplicated) prefix = [0.0] * (n + 1) for i in range(1, n+1): prefix[i] = prefix[i-1] + (duplicated[i-1] - x) dq = deque() found = False for i in range(1, n+1): if i < K: continue window_start = max(0, i - N) window_end = i - K if window_end < 0: continue j = window_end # Add j to deque maintaining increasing order of prefix[j] while dq and prefix[j] <= prefix[dq[-1]]: dq.pop() dq.append(j) # Remove elements from the front that are out of the window while dq and dq[0] < window_start: dq.popleft() # Check if current sum is non-negative if dq: current = prefix[i] - prefix[dq[0]] if current >= -eps: found = True break return found if __name__ == '__main__': main()