import numpy as np

N,K=list(map(int,input().split()))

P=list(map(int,input().split()))

Q=[0]

def ex(A):

  return (1+A)/2.0

for i in range(N):

  Q.append(ex(P[i]))

Q=np.array(Q)

R=Q.cumsum()

ans=0

for i in range(K,N+1):

  S=R[i]-R[i-K]

  if ans<S:

    ans=S

print(ans)
#ika tako

n, k = list(map(int, input().split()))

ppp = list(map(int, input().split()))

tot = sum(ppp[:k])#まず、先頭K個の合計を求める

ans = tot#仮の答としておく

for i in range(k, n):#for文で0-indexでk+1番目から最後までチェック

    tot += ppp[i] - ppp[i - k]#新しくi番目を足して、一番古いものを引く

    ans = max(ans, tot)#新しい答が大きいなら更新する

print(((ans + k) / 2))#K個分のサイコロの期待値を出力する
import numpy as np

N, K = list(map(int, input().split()))
P = list(map(int, input().split()))
Q = [0]


def ex(A):
    return (1 + A) / 2.0


for i in range(N):
    Q.append(ex(P[i]))
Q = np.array(Q)
R = Q.cumsum()
ans = 0
for i in range(K, N + 1):
    S = R[i] - R[i - K]
    if ans < S:
        ans = S
print(ans)

# ika tako
n, k = list(map(int, input().split()))
ppp = list(map(int, input().split()))
tot = sum(ppp[:k])  # まず、先頭K個の合計を求める
ans = tot  # 仮の答としておく
for i in range(k, n):  # for文で0-indexでk+1番目から最後までチェック
    tot += ppp[i] - ppp[i - k]  # 新しくi番目を足して、一番古いものを引く
    ans = max(ans, tot)  # 新しい答が大きいなら更新する
print(((ans + k) / 2))  # K個分のサイコロの期待値を出力する

-import numpy as np - -N, K = list(map(int, input().split())) -P = list(map(int, input().split())) -Q = [0] - - -def ex(A): -    return (1 + A) / 2.0 - - -for i in range(N): -    Q.append(ex(P[i])) -Q = np.array(Q) -R = Q.cumsum() -ans = 0 -for i in range(K, N + 1): -    S = R[i] - R[i - K] -    if ans < S: -        ans = S -print(ans) +# ika tako +n, k = list(map(int, input().split())) +ppp = list(map(int, input().split())) +tot = sum(ppp[:k])  # まず、先頭K個の合計を求める +ans = tot  # 仮の答としておく +for i in range(k, n):  # for文で0-indexでk+1番目から最後までチェック +    tot += ppp[i] - ppp[i - k]  # 新しくi番目を足して、一番古いものを引く +    ans = max(ans, tot)  # 新しい答が大きいなら更新する +print(((ans + k) / 2))  # K個分のサイコロの期待値を出力する