# きりみんちゃんの配信をみてたので期待値は分かる

# 素直にTLEくらったので累積和で加減する

# え これでもだめなの

# あほだった sumしてるし

# 単純にみたら 0.5ずつ増えてるのでそうするか

# 1WA...

# N = 1の場合か？





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

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

table = {}

ans = 0

for i in range(1, 1000 + 1):

    table[i] = (i + 1) * 0.5

if n == 1:

    print((table[arr[0]]))

    exit()

lis = [0 for _ in range(n)]

lis[0] = table[arr[0]]

for i in range(n - 1):

    if i + 1 < k:

        lis[i + 1] = lis[i] + table[arr[i + 1]]

    else:

        lis[i + 1] = lis[i] + table[arr[i + 1]] - table[arr[i - k + 1]]

    ans = max(ans, lis[i + 1])

print(ans)

# 和の期待値は期待値の和

# それぞれ期待値を出したあとは大きさKの区間和の最大値

# n(n+1)/2

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

p = []

for x in list(map(int, input().split())):

    p.append((x * (x + 1) // 2) / x)



ans = 0

tmp = 0

for i in range(n):

    tmp += p[i]

    if i >= k:

        tmp -= p[i - k]

    ans = max(ans, tmp)



print(ans)
# きりみんちゃんの配信をみてたので期待値は分かる
# 素直にTLEくらったので累積和で加減する
# え これでもだめなの
# あほだった sumしてるし
# 単純にみたら 0.5ずつ増えてるのでそうするか
# 1WA...
# N = 1の場合か？
n, k = list(map(int, input().split()))
arr = list(map(int, input().split()))
table = {}
ans = 0
for i in range(1, 1000 + 1):
    table[i] = (i + 1) * 0.5
if n == 1:
    print((table[arr[0]]))
    exit()
lis = [0 for _ in range(n)]
lis[0] = table[arr[0]]
for i in range(n - 1):
    if i + 1 < k:
        lis[i + 1] = lis[i] + table[arr[i + 1]]
    else:
        lis[i + 1] = lis[i] + table[arr[i + 1]] - table[arr[i - k + 1]]
    ans = max(ans, lis[i + 1])
print(ans)

# 和の期待値は期待値の和
# それぞれ期待値を出したあとは大きさKの区間和の最大値
# n(n+1)/2
n, k = list(map(int, input().split()))
p = []
for x in list(map(int, input().split())):
    p.append((x * (x + 1) // 2) / x)
ans = 0
tmp = 0
for i in range(n):
    tmp += p[i]
    if i >= k:
        tmp -= p[i - k]
    ans = max(ans, tmp)
print(ans)

-# きりみんちゃんの配信をみてたので期待値は分かる -# 素直にTLEくらったので累積和で加減する -# え これでもだめなの -# あほだった sumしてるし -# 単純にみたら 0.5ずつ増えてるのでそうするか -# 1WA... -# N = 1の場合か？ +# 和の期待値は期待値の和 +# それぞれ期待値を出したあとは大きさKの区間和の最大値 +# n(n+1)/2 -arr = list(map(int, input().split())) -table = {} +p = [] +for x in list(map(int, input().split())): +    p.append((x * (x + 1) // 2) / x) -for i in range(1, 1000 + 1): -    table[i] = (i + 1) * 0.5 -if n == 1: -    print((table[arr[0]])) -    exit() -lis = [0 for _ in range(n)] -lis[0] = table[arr[0]] -for i in range(n - 1): -    if i + 1 < k: -        lis[i + 1] = lis[i] + table[arr[i + 1]] -    else: -        lis[i + 1] = lis[i] + table[arr[i + 1]] - table[arr[i - k + 1]] -    ans = max(ans, lis[i + 1]) +tmp = 0 +for i in range(n): +    tmp += p[i] +    if i >= k: +        tmp -= p[i - k] +    ans = max(ans, tmp)