using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
    static void Main(string[] args)
    {
        string[] In = Console.ReadLine().Split(' ');
        int n = int.Parse(In[0]);
        int k = int.Parse(In[1]);
        string[] In2 = Console.ReadLine().Split(' ');
        int[] A = new int[n];
        for (int i = 0; i < n; i++)
        {
            A[i] = int.Parse(In2[i])+1;
        }
        int mx = 0, s =0;
        var q = new Queue<int>();
        for(int i=0; i < n; i++)
        {
            s += A[i];
            q.Enqueue(A[i]);
            if (q.Count() > k)
            {
                s -= q.Dequeue();
            }
            if (q.Count() == k)
            {
                mx = (int)Math.Max(mx,s);
            }
        }
        double ans = mx;
        ans /= 2;
        Console.WriteLine(ans);
    }
}
//TLE
//class Program
//{
//    static void Main(string[] args)
//    {
//        string[] In = Console.ReadLine().Split(' ');
//        int n = int.Parse(In[0]);
//        int k = int.Parse(In[1]);
//        string[] In2 = Console.ReadLine().Split(' ');
//        int[] A = new int[n];
//        int max = 0;
//        for (int i = 0; i < n; i++)
//        {
//            A[i] = int.Parse(In2[i]);
//            if (A[i] > max) max = A[i];
//        }
//        long[] S = new long[max + 1];
//        for (int i = 1; i <S.Length; i++)
//        {
//            S[i] = S[i - 1] + i;
//        }
//        double[] Ex = new double[max + 1];
//        for(int i=1; i<Ex.Length;i++)
//        {
//            Ex[i] = (double)S[i] / i;
//        }
//        int num_sum = 0;
//        int index = 0;
//        for (int i = 0; i <= n - k; i++)
//        {
//            int temp = 0;
//            for (int j = 0; j < k; j++)
//            {
//                temp += A[i+j];
//            }
//            if (temp > num_sum)
//            {
//                num_sum = temp;
//                index = i;
//            }
//        }
//        double sum = 0;
//        for(int i = index; i < index + k; i++)
//        {
//            sum += Ex[A[i]];
//        }
//        Console.WriteLine(sum);
//    }
//}
//勘違い
//class Program
// {i
//    static void Main(string[] args)
//    {
//        string[] In = Console.ReadLine().Split(' ');
//        int n = int.Parse(In[0]);
//        int k = int.Parse(In[1]);
//        string[] In2 = Console.ReadLine().Split(' ');
//        var M = new List<int>();
//        for(int i=0; i < n; i++)
//        {
//            int x = int.Parse(In2[i]);
//            if (M.Count < k)
//            {
//                M.Add(x);
//                M.Sort((a,b)=>b-a);
//            }
//            else
//            {
//                if (M[k-1] < x)
//                {
//                    M[k-1] = x;
//                    M.Sort((a, b) => b - a);
//                }
//            }

//        }
//        long[] S = new long[M[0] + 1];
//        for(int i = 1; i <= M[0]; i++)
//        {
//            S[i] = S[i - 1] + i;
//        }
//        double ans = 0;
//        for(int i = 0; i < M.Count; i++)
//        {
//            ans += (double)S[M[i]] / (double)M[i];
//        }
//        Console.WriteLine("{0:.######}",ans);
//        Console.WriteLine("--------");
//        for(int i = 0; i < S.Length; i++)
//        {
//            Console.WriteLine("EX({0})={1}", i, (double)S[i] / i);
//        }
//    }
//}



Measured memory_bytes: 29148