"use strict";
// 人様のコード参照
const main = arg => {
  	// お決まりの処理たち
    arg = arg.trim().split("\n");
    const N = parseInt(arg[0].split(" ")[0]);
    const K = parseInt(arg[0].split(" ")[1]);
    const p = arg[1].split(" ").map(n=>parseInt(n));
    
    // 期待値はpが大きいほど大きくなる
    // 最後に計算すれば良い
  	// 累積和の定義
  	let totalSum = new Array(N + 1).fill(0);
  	
    // 累積和
  	for(let i = 0; i < N; i++){
    	totalSum[i + 1] += totalSum[i] + p[i];
    }
  
    let max = 0;
    let index  = 0;    
    // Kの範囲で大きくなってるとこ探す
  	for(let j = K; j < N + K - 1; j++){
      	// 暫定チャンピオンを常に見ておく
      	let cand = totalSum[j] - totalSum[j - K];
       	// console.log(`cand${j}: ${cand}`);
        //累積和と最大値の紐付けはiのK個前からKまでそれは記憶しておく
      	// 暫定チャンピオンの情報を記録していく
      	if(max < cand){
        	max = cand;
          	index = j - K;
        }
	}
    let expectation = 0;
    // 期待値を計算
    for(let l = 0; l < K; l++){
	  	expectation += (1 + p[index + l])/2;
    }
    
    console.log(expectation);
}
main(require('fs').readFileSync('/dev/stdin', 'utf8'));
