// n 個のサイコロが左から右に一列に並べてあります。左から i 番目のサイコロは 1 から p i までの p i 種類の目がそれぞれ等確率で出ます。
// 隣接する k 個のサイコロを選んでそれぞれ独立に振ったとき、出る目の合計の期待値の最大値を求めてください。
//

const expectedvalue = (maxnum) => {
  let x = 0;
  for (let i = 1; i <= maxnum; i++) {
    x += i;
  }

  return x / maxnum;
};

const rangeexpectedvalue = (arrmaxnum) => {
  // 各種期待値の算出を行う。
  const expectedvaluelist = arrmaxnum.map((val) => expectedvalue(val));
  if (expectedvaluelist.length <= 1) {
    return expectedvaluelist[0];
  }

  return expectedvaluelist.reduce((prev, next) => prev + next);
};


function main(input) {
  const [args, maxnums] = input.split('\n');
  const rangenum = args.split(' ')[1];
  const maxnumlist = maxnums.split(' ');
  const result = [];
  for (let i = 0; i < maxnumlist.length; i++) {
    // 指定回数思考できない場合は抜ける
    if (maxnumlist.length - i < Number(rangenum)) {
      break;
    }
    const rangeresutl = rangeexpectedvalue(
      maxnumlist
        .slice(0 + i, Number(rangenum) + i)
        .map((val) => Number(val))
    );
    result.push(rangeresutl);
  }
  console.log(result.reduce((prev, next) => Number(prev) + Number(next)) / result.length);
}

const input = `4 1
6 6 6 6 6
`;

main(input);
