#include <stdio.h>

int main() {
	int n,a[10000],k;
	scanf("%d%d",&n,&k);
	for(int i=0;i<n;i++)
	scanf("%d",&a[i]);
	float maxi=0.0;
	int psum[n+1];
    for(int i=0;i<=n;i++)
    psum[i]=0;
	for(int i=1;i<=n;i++)
	{
	psum[i]=psum[i-1]+a[i-1];
//	cout<<psum[i]<<" ";
	}
	//cout<<endl;
	for(int i=k;i<=n;i++)
	{
	    for(int z=i-k;z>=0;z--)
	    {  //cout<<psum[i]-psum[z];
	        double curr=(double)((psum[i]-psum[z]))/(i-z);
	        if(curr>maxi)
	        maxi=curr;
	    }
	}
//	int precision = std::numeric_limits<double>::max_digits10;
//std::cout << std::setprecision(precision) << maxi << std::endl;

    printf("%0.9f",maxi);
	return 0;
}


#if 01

#include<stdio.h>

#define MAX (5001)

int arr[MAX];
int n, k;
double max;

void getValue(int i, int j, int sum){
	int q = sum, p = j - i + 1;
	double val;
	val = (double)q / p;
	if (val > max)max = val;
}
int main(void){
	int sum, temp;
	scanf("%d %d", &n, &k);
	for (int i = 1; i <= n; i++){
		scanf("%d", &arr[i]);
	}
	sum = 0;
	for (int i = 1; i <= k; i++)sum += arr[i];
	getValue(1, k, sum);
	temp = sum;
	for (int i = k + 1; i <= n; i++){
		temp += arr[i]; getValue(1, i, temp);
	}

	for (int i = 1, j = k + 1; i <= n - k; i++, j++){
		sum -= arr[i], sum += arr[j];
		getValue(i, j, sum);
		temp = sum;
		for (int z = j + 1; z <= n; z++){
			temp += arr[z];
			getValue(i, z, temp);
		}
	}

	printf("%f", max);

	return 0;
}

#endif


#if 01

#include<stdio.h>

#define MAX (5001)

int arr[MAX];
int n, k;
double max;

void getValue(int i, int j, int sum){
	int q = sum, p = j - i + 1;
	double val;
	val = (double)q / p;
	if (val > max)max = val;
}
int main(void){
	int sum, temp;
	scanf("%d %d", &n, &k);
	for (int i = 1; i <= n; i++){
		scanf("%d", &arr[i]);
	}
	sum = 0;
	for (int i = 1; i <= k; i++)sum += arr[i];
	getValue(1, k, sum);
	temp = sum;
	for (int i = k + 1; i <= n; i++){
		temp += arr[i]; getValue(1, i, temp);
	}

	for (int i = 1, j = k + 1; i <= n - k; i++, j++){
		sum -= arr[i], sum += arr[j];
		getValue(i + 1, j, sum);
		temp = sum;
		for (int z = j + 1; z <= n; z++){
			temp += arr[z];
			getValue(i + 1, z, temp);
		}
	}

	printf("%f", max);

	return 0;
}

#endif


#if 01

#include<stdio.h>

#define MAX (5001)

int arr[MAX];
int n, k;
double max;

void getValue(int i, int j, int sum){
	int q = sum, p = j - i + 1;
	double val;
	val = (double)q / p;
	if (val > max)max = val;
}
int main(void){
	int sum, temp;
	scanf("%d %d", &n, &k);
	for (int i = 1; i <= n; i++){
		scanf("%d", &arr[i]);
	}
	sum = 0;
	for (int i = 1; i <= k; i++)sum += arr[i];
	getValue(1, k, sum);
	temp = sum;
	for (int i = k + 1; i <= n; i++){
		temp += arr[i]; getValue(1, i, temp);
	}

	for (int i = 1, j = k + 1; i <= n - k; i++, j++){
		sum -= arr[i], sum += arr[j];
		getValue(i, j, sum);
		temp = sum;
		for (int z = j + 1; z <= n; z++){
			temp += arr[z];
			getValue(i, z, temp);
		}
	}

	printf("%.12f", max);

	return 0;
}

#endif


#include <stdio.h>
#define MAX(a, b) ((a) > (b) ? (a) : (b))

static int k;
static int n;
static int A[5000];

int main(void)
{
        int i, j;
        int sum;
        double avg;
        scanf("%d %d", &n, &k);
        for (i = 0; i < n; i++) {
                scanf("%d", &A[i]);
        }
        avg = 0.0;
        for (i = 0; i <= n - k; i++) {
                sum = 0;
                for (j = i; j < n; j++) {
                        sum += A[j];
                        if (j - i + 1 >= k)
                                avg = MAX(avg, (double) sum / (j-i+1));
                }
        }
        printf("%.12lf\n", avg);
        return 0;
}


#include <stdlib.h>
#include <stdio.h>

int main(void)
{
	double ans = 0, sum = 0, a[5005], s[5005];
	int n, k;
	s[0] = 0;
	scanf("%d%d", &n, &k);
	int i, j, m;
	for (i = 0; i < n; i++)
	{
		scanf("%lf", &a[i]);
		s[i+1] = s[i] + a[i];
	}

	for (;k <= n; k++)
	{
		for (i = 0; i <= n-k; i++)
		{
			sum = s[i+k] - s[i];
			sum /= k;
			ans = (ans >= sum)? ans : sum;
		}

	}

	printf("%lf\n", ans);
	return 0;

}


#include <stdlib.h>
#include <stdio.h>

int main(void)
{
	double ans = 0, sum = 0, a[5005];
	int n, k;
	scanf("%d%d", &n, &k);
	int i, j, m;
	for (i = 0; i < n; i++)
		scanf("%lf", &a[i]);

	for (;k <= n; k++)
	{
		for (i = 0; i < n-k; i++)
		{
			sum = 0;
			for (j = i; j < k + i; j++)
				sum += a[j];
			sum /= k;
			ans = (ans >= sum)? ans : sum;
		}

	}

	printf("%lf\n", ans);
	return 0;

}


#include <stdlib.h>
#include <stdio.h>

int main(void)
{
	double ans = 0, sum = 0, a[5005];
	int n, k;
	scanf("%d%d", &n, &k);
	int i, j, m;
	for (i = 0; i < n; i++)
		scanf("%lf", &a[i]);

	for (;k <= n; k++)
	{
		for (i = 0; i <= n-k; i++)
		{
			sum = 0;
			for (j = i; j < k + i; j++)
				sum += a[j];
			sum /= k;
			ans = (ans >= sum)? ans : sum;
		}

	}

	printf("%lf\n", ans);
	return 0;

}


#include <stdlib.h>
#include <stdio.h>

int main(void)
{
	double ans = 0, sum = 0, a[5005];
	int n, k;
	scanf("%d%d", &n, &k);
	int i, j, m;
	for (i = 0; i < n; i++)
		scanf("%lf", &a[i]);

	for (;k <= n; k++)
	{
		for (i = 0; i < n-k; i++)
		{
			sum = 0;
			for (j = i; j < k; j++)
				sum += a[j];
			sum /= k;
			ans = (ans >= sum)? ans : sum;
		}

	}

	printf("%lf\n", ans);
	return 0;

}


#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<limits.h>
int main()
{
	int n,k,i,j,sum=0;
	double avg,max=0;
	scanf("%d %d",&n,&k);
	int *a=(int *)malloc(sizeof(int)*n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	for(i=1;i<n;i++)
	{
		a[i]=a[i]+a[i-1];
	}
	for(j=k;j<n;j++)
	{
		for(i=0;i<=(n-k);i++)
		{
			if(i>0)
			{
			sum=a[i+k-1]-a[i-1];
			}
			else
			{
				sum=a[i+k-1];
			}
			avg=(double)sum/k;
			if(max<avg)
			{
				max=avg;
			}
		}
	}
	printf("%.16lf",max);
}


#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<limits.h>
int main()
{
	int n,k,i,j,sum=0;
	double avg;
	double max=0;
	scanf("%d %d",&n,&k);
	int *a=(int *)malloc(sizeof(int)*n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	for(i=1;i<n;i++)
	{
		a[i]=a[i]+a[i-1];
	}
	for(j=k;j<=n;j++)
	{
		for(i=0;i<=(n-j);i++)
		{
			if(i>0)
			{
			sum=a[i+j-1]-a[i-1];
			}
			else
			{
				sum=a[i+j-1];
			}
			avg=(double)sum/j;
			if(max<avg)
			{
				max=avg;
			}
		}
	}
	printf("%lf",max);
}


#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<limits.h>
int main()
{
	int n,k,i,j,sum=0;
	double avg,max=0;
	scanf("%d %d",&n,&k);
	int *a=(int *)malloc(sizeof(int)*n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	for(i=1;i<n;i++)
	{
		a[i]=a[i]+a[i-1];
	}
	for(j=k;j<=n;j++)
	{
		for(i=0;i<=(n-j);i++)
		{
			if(i>0)
			{
			sum=a[i+k-1]-a[i-1];
			}
			else
			{
				sum=a[i+k-1];
			}
			avg=(double)sum/k;
			if(max<avg)
			{
				max=avg;
			}
		}
	}
	printf("%.16lf",max);
}


#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<limits.h>
int main()
{
	int n,k,i,j,sum=0;
	double avg;
	double max=0;
	scanf("%d %d",&n,&k);
	int *a=(int *)malloc(sizeof(int)*n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	for(i=1;i<n;i++)
	{
		a[i]=a[i]+a[i-1];
	}
	for(j=k;j<=n;j++)
	{
		for(i=0;i<=(n-j);i++)
		{
			if(i>0)
			{
			sum=a[i+k-1]-a[i-1];
			}
			else
			{
				sum=a[i+k-1];
			}
			avg=(double)sum/k;
			if(max<avg)
			{
				max=avg;
			}
		}
	}
	printf("%lf",max);
}


#include<stdio.h>

int n,k;
int a[5005];

void Nhap()
{
    scanf("%d %d",&n,&k);
    for(int i=1; i<=n; i++) scanf("%d",&a[i]);
    a[0]=0;
    for(int i=1; i<=n; i++) a[i]+=a[i-1];
}

void XuLi()
{
    int tmp;
    double kq,maxx=0;
    for(int i=0; i<=n; i++) {
        for(int j=i+k; j<=n; j++) {
            tmp=a[j]-a[i];
            kq=(double)tmp/(j-i);
           // printf("%f\n",kq);
            if(kq>maxx) maxx=kq;
        }
    }
    printf("%.15f",maxx);
}

int main()
{
   // init();
    Nhap();
    XuLi();
}


import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 *
 * @author programajor
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        InputReader in = new InputReader(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        TaskC solver = new TaskC();
        solver.solve(1, in, out);
        out.close();
    }

    static class TaskC {
        public void solve(int testNumber, InputReader in, PrintWriter out) {
            int n = in.nextInt();
            int k = in.nextInt();
            int[] temp = in.nextIntArray(n);
            double sum = Double.MIN_VALUE;
            for (int i = k; i <= n; i++) {
                for (int j = k - 1; j < n; j++) {
                    long s = 0;
                    for (int x = 0; x < k; x++) {
                        s += temp[j - x];
                    }
                    sum = Math.max(sum, s * 1.0 / i);
                }
            }
            out.print(sum);
        }

    }

    static class InputReader {
        private BufferedReader reader;
        private StringTokenizer tokenizer;

        public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        }

        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

        public int[] nextIntArray(int s) {
            int[] in = new int[s];
            for (int i = 0; i < s; i++) {
                in[i] = nextInt();
            }
            return in;
        }

    }
}


import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 *
 * @author programajor
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        InputReader in = new InputReader(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        TaskC solver = new TaskC();
        solver.solve(1, in, out);
        out.close();
    }

    static class TaskC {
        public void solve(int testNumber, InputReader in, PrintWriter out) {
            int n = in.nextInt();
            int k = in.nextInt();
            int[] temp = in.nextIntArray(n);
            double sum = Double.MIN_VALUE;
            for (int i = k; i <= n; i++) {
                long s = getFirstK(i, temp);
                sum = Math.max(sum, (s * 1.0) / i);
                int index = i;
                while (index < n) {
                    s += temp[index];
                    s -= temp[index - i];
                    sum = Math.max(sum, (s * 1.0) / i);
                    index++;
                }
            }
            out.print(sum);
        }

        private long getFirstK(int k, int[] temp) {
            long ret = 0;
            for (int i = 0; i < k; i++) {
                ret += temp[i];
            }
            return ret;
        }

    }

    static class InputReader {
        private BufferedReader reader;
        private StringTokenizer tokenizer;

        public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        }

        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

        public int[] nextIntArray(int s) {
            int[] in = new int[s];
            for (int i = 0; i < s; i++) {
                in[i] = nextInt();
            }
            return in;
        }

    }
}


import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 *
 * @author programajor
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        InputReader in = new InputReader(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        TaskC solver = new TaskC();
        solver.solve(1, in, out);
        out.close();
    }

    static class TaskC {
        public void solve(int testNumber, InputReader in, PrintWriter out) {
            int n = in.nextInt();
            int k = in.nextInt();
            int[] temp = in.nextIntArray(n);
            double sum = Double.MIN_VALUE;
            for (int i = k; i <= n; i++) {
                long s = getFirstK(i, temp);
                sum = Math.max(sum, (s * 1.0) / i);
                int index = i;
                while (index < n) {
                    s += temp[index];
                    s -= temp[index - k];
                    sum = Math.max(sum, (s * 1.0) / i);
                    index++;
                }
            }
            out.print(sum);
        }

        private long getFirstK(int k, int[] temp) {
            long ret = 0;
            for (int i = 0; i < k; i++) {
                ret += temp[i];
            }
            return ret;
        }

    }

    static class InputReader {
        private BufferedReader reader;
        private StringTokenizer tokenizer;

        public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        }

        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

        public int[] nextIntArray(int s) {
            int[] in = new int[s];
            for (int i = 0; i < s; i++) {
                in[i] = nextInt();
            }
            return in;
        }

    }
}


import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 *
 * @author programajor
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        InputReader in = new InputReader(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        TaskC solver = new TaskC();
        solver.solve(1, in, out);
        out.close();
    }

    static class TaskC {
        public void solve(int testNumber, InputReader in, PrintWriter out) {
            int n = in.nextInt();
            int k = in.nextInt();
            int[] temp = in.nextIntArray(n);
            double sum = Double.MIN_VALUE;
            for (int i = 1; i <= k; i++) {
                for (int j = k - 1; j < n; j++) {
                    long s = 0;
                    for (int x = 0; x < k; x++) {
                        s += temp[j - x];
                    }
                    sum = Math.max(sum, s * 1.0 / i);
                }
            }
            out.print(sum);
        }

    }

    static class InputReader {
        private BufferedReader reader;
        private StringTokenizer tokenizer;

        public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        }

        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

        public int[] nextIntArray(int s) {
            int[] in = new int[s];
            for (int i = 0; i < s; i++) {
                in[i] = nextInt();
            }
            return in;
        }

    }
}


//Codeforces Round #494 (Div. 3), 2018_07_03
import java.io.*;
import java.util.*;

public class TaskC {

    public static void main (String[] args) throws IOException {
        FastScanner fs = new FastScanner(System.in);
        PrintWriter pw = new PrintWriter(new BufferedOutputStream(System.out));

        int n = fs.nextInt();
        int k = fs.nextInt();
        int[] a = new int[n+1];
        for (int i = 0; i < n; i++) {
            a[i] = fs.nextInt();
        }

        int s = 0;
        for (int i = 0; i < k; i++) {
            s += a[i];
        }

        int m1 = 0;
        int m2 = 1;
        for (int j = k; j <= n; j++) {
            int q = s;
            for (int i = 0; i <= n - j; i++) {
                if (m1*j < q*m2) {
                    m1 = q;
                    m2 = j;
                }
                q -= a[i];
                q += a[i+k];
            }
            s += a[j];
        }

        pw.println(((double)m1)/m2);

        pw.close();
    }

    static class FastScanner {
        BufferedReader reader;
        StringTokenizer tokenizer;
        FastScanner(InputStream i) {
            reader = new BufferedReader(new InputStreamReader(i));
            tokenizer = new StringTokenizer("");
        }
        String next() throws IOException {
            while(!tokenizer.hasMoreTokens()) tokenizer = new StringTokenizer(reader.readLine());
            return tokenizer.nextToken();
        }
        int nextInt() throws IOException {
            return Integer.parseInt(next());
        }
        long nextLong() throws IOException {
            return Long.parseLong(next());
        }
    }
}


//Codeforces Round #494 (Div. 3), 2018_07_03
import java.io.*;
import java.util.*;

public class TaskC {

    public static void main (String[] args) throws IOException {
        FastScanner fs = new FastScanner(System.in);
        PrintWriter pw = new PrintWriter(new BufferedOutputStream(System.out));

        int n = fs.nextInt();
        int k = fs.nextInt();
        int[] a = new int[n+1];
        for (int i = 0; i < n; i++) {
            a[i] = fs.nextInt();
        }

        int s = 0;
        for (int i = 0; i < k; i++) {
            s += a[i];
        }

        int m1 = 0;
        int m2 = 1;
        for (int j = k; j <= n; j++) {
            int q = s;
            for (int i = 0; i <= n - j; i++) {
                if (m1*j < q*m2) {
                    m1 = q;
                    m2 = j;
                }
                q -= a[i];
                q += a[i+j];
            }
            s += a[j];
        }

        pw.println(((double)m1)/m2);

        pw.close();
    }

    static class FastScanner {
        BufferedReader reader;
        StringTokenizer tokenizer;
        FastScanner(InputStream i) {
            reader = new BufferedReader(new InputStreamReader(i));
            tokenizer = new StringTokenizer("");
        }
        String next() throws IOException {
            while(!tokenizer.hasMoreTokens()) tokenizer = new StringTokenizer(reader.readLine());
            return tokenizer.nextToken();
        }
        int nextInt() throws IOException {
            return Integer.parseInt(next());
        }
        long nextLong() throws IOException {
            return Long.parseLong(next());
        }
    }
}


//Codeforces Round #494 (Div. 3), 2018_07_03
import java.io.*;
import java.util.*;

public class TaskC {

    public static void main (String[] args) throws IOException {
        FastScanner fs = new FastScanner(System.in);
        PrintWriter pw = new PrintWriter(new BufferedOutputStream(System.out));

        int n = fs.nextInt();
        int k = fs.nextInt();
        int[] a = new int[n+1];
        for (int i = 0; i < n; i++) {
            a[i] = fs.nextInt();
        }

        int s = 0;
        for (int i = 0; i < k; i++) {
            s += a[i];
        }

        int m1 = 0;
        int m2 = 1;
        for (int j = k; j <= n; j++) {
            int q = s;
            for (int i = 0; i <= n - j; i++) {
                if (m1*j < q*m2) {
                    m1 = q;
                    m2 = j;
                }
                q -= a[i];
                q += a[i+j];
            }
            s += a[j];
        }

        pw.println(((double)m1)/((double)m2));

        pw.close();
    }

    static class FastScanner {
        BufferedReader reader;
        StringTokenizer tokenizer;
        FastScanner(InputStream i) {
            reader = new BufferedReader(new InputStreamReader(i));
            tokenizer = new StringTokenizer("");
        }
        String next() throws IOException {
            while(!tokenizer.hasMoreTokens()) tokenizer = new StringTokenizer(reader.readLine());
            return tokenizer.nextToken();
        }
        int nextInt() throws IOException {
            return Integer.parseInt(next());
        }
        long nextLong() throws IOException {
            return Long.parseLong(next());
        }
    }
}


//Codeforces Round #494 (Div. 3), 2018_07_03
import java.io.*;
import java.util.*;

public class TaskC {

    public static void main (String[] args) throws IOException {
        FastScanner fs = new FastScanner(System.in);
        PrintWriter pw = new PrintWriter(new BufferedOutputStream(System.out));

        int n = fs.nextInt();
        int k = fs.nextInt();
        int[] a = new int[n+1];
        for (int i = 0; i < n; i++) {
            a[i] = fs.nextInt();
        }

        int s = 0;
        for (int i = 0; i < k; i++) {
            s += a[i];
        }

        int m1 = 0;
        int m2 = 1;
        for (int j = k; j <= n; j++) {
            int q = s;
            for (int i = 0; i <= n - k; i++) {
                if (m1*j < q*m2) {
                    m1 = q;
                    m2 = j;
                }
                q -= a[i];
                q += a[i+k];
            }
            s += a[j];
        }

        pw.println(((double)m1)/m2);

        pw.close();
    }

    static class FastScanner {
        BufferedReader reader;
        StringTokenizer tokenizer;
        FastScanner(InputStream i) {
            reader = new BufferedReader(new InputStreamReader(i));
            tokenizer = new StringTokenizer("");
        }
        String next() throws IOException {
            while(!tokenizer.hasMoreTokens()) tokenizer = new StringTokenizer(reader.readLine());
            return tokenizer.nextToken();
        }
        int nextInt() throws IOException {
            return Integer.parseInt(next());
        }
        long nextLong() throws IOException {
            return Long.parseLong(next());
        }
    }
}


//Codeforces Round #494 (Div. 3), 2018_07_03
import java.io.*;
import java.util.*;

public class TaskC {

    public static void main (String[] args) throws IOException {
        FastScanner fs = new FastScanner(System.in);
        PrintWriter pw = new PrintWriter(new BufferedOutputStream(System.out));

        int n = fs.nextInt();
        int k = fs.nextInt();
        int[] a = new int[n+1];
        for (int i = 0; i < n; i++) {
            a[i] = fs.nextInt();
        }

        int s = 0;
        for (int i = 0; i < k; i++) {
            s += a[i];
        }

        long m1 = 0;
        long m2 = 1;
        for (int j = k; j <= n; j++) {
            int q = s;
            for (int i = 0; i <= n - j; i++) {
                if (m1*j < q*m2) {
                    m1 = q;
                    m2 = j;
                }
                q -= a[i];
                q += a[i+j];
            }
            s += a[j];
        }

        pw.println(((double)m1)/((double)m2));

        pw.close();
    }

    static class FastScanner {
        BufferedReader reader;
        StringTokenizer tokenizer;
        FastScanner(InputStream i) {
            reader = new BufferedReader(new InputStreamReader(i));
            tokenizer = new StringTokenizer("");
        }
        String next() throws IOException {
            while(!tokenizer.hasMoreTokens()) tokenizer = new StringTokenizer(reader.readLine());
            return tokenizer.nextToken();
        }
        int nextInt() throws IOException {
            return Integer.parseInt(next());
        }
        long nextLong() throws IOException {
            return Long.parseLong(next());
        }
    }
}


import java.io.*;
import java.lang.*;
import java.util.*;

public class C {

    public static void main (String args[]) {

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();
        int a[] = new int[n];
        for (int i = 0 ; i < n ; i++) {
            a[i] = sc.nextInt();
        }
        SegmentTree _st = new SegmentTree(a, n);
        double avg = 0;
        for (int i = 0 ; i < n ; i++) {
            for (int j = i + k - 1 ; j < n ; j++) {
                double c = _st.qry(0, n - 1, i, j, 0);
                c = c / (j + 1 - i);
                avg = Math.max(c, avg);
            }
        }
        System.out.printf("%.15f\n", avg);
    }
}

class SegmentTree {

    int st[];

    SegmentTree(int arr[], int n) {
        int x = (int) (Math.ceil(Math.log(n) / Math.log(2)));
        int max_size = 2 * (int) Math.pow(2, x) - 1;
        st = new int[max_size];
        build(arr, 0, n - 1, 0);
    }

    int build(int arr[], int f, int t, int i) {
        if (f == t) {
            st[i] = arr[f];
            return arr[f];
        }
        int mid = (f + t) / 2;
        st[i] = build(arr, f, mid, i * 2 + 1) + build(arr, mid + 1, t, i * 2 + 2);
        return st[i];
    }

    int qry(int f, int t, int qf, int qt, int i) {
        if (qf <= f && qt >= t)
            return st[i];
        if (t < qf || f > qt)
            return 0;
        int mid = (f + t) / 2;
        return qry(f, mid, qf, qt, 2*i+1) + qry(mid + 1, t, qf, qt, 2*i+2);
    }
}


import java.io.*;
import java.lang.*;
import java.util.*;

public class C {

    public static void main (String args[]) {

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();
        int a[] = new int[n];
        for (int i = 0 ; i < n ; i++) {
            a[i] = sc.nextInt();
        }
        SegmentTree _st = new SegmentTree(a, n);
        float avg = 0;
        for (int i = 0 ; i < n ; i++) {
            for (int j = i + k - 1 ; j < n ; j++) {
                float c = _st.qry(0, n - 1, i, j, 0);
                c = c / (j + 1 - i);
                avg = Math.max(c, avg);
            }
        }
        System.out.println(avg);
    }
}

class SegmentTree {

    int st[];

    SegmentTree(int arr[], int n) {
        int x = (int) (Math.ceil(Math.log(n) / Math.log(2)));
        int max_size = 2 * (int) Math.pow(2, x) - 1;
        st = new int[max_size];
        build(arr, 0, n - 1, 0);
    }

    int build(int arr[], int f, int t, int i) {
        if (f == t) {
            st[i] = arr[f];
            return arr[f];
        }
        int mid = (f + t) / 2;
        st[i] = build(arr, f, mid, i * 2 + 1) + build(arr, mid + 1, t, i * 2 + 2);
        return st[i];
    }

    int qry(int f, int t, int qf, int qt, int i) {
        if (qf <= f && qt >= t)
            return st[i];
        if (t < qf || f > qt)
            return 0;
        int mid = (f + t) / 2;
        return qry(f, mid, qf, qt, 2*i+1) + qry(mid + 1, t, qf, qt, 2*i+2);
    }
}


import java.io.*;
import java.lang.*;
import java.util.*;

public class C2 {

    public static void main (String args[]) {

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();
        int a[] = new int[n];
        a[0] = sc.nextInt();
        for (int i = 1 ; i < n ; i++) {
            a[i] = sc.nextInt() + a[i-1];
        }
        float avg = 0;
        for (int i = 0 ; i < n ; i++) {
            for (int j = i + k - 1 ; j < n ; j++) {
                float c = 0;
                if (i == 0) {
                    c = a[j];
                }
                else {
                    c = a[j] - a[i-1];
                }
                c = c / (j + 1 - i);
                avg = Math.max(c, avg);
            }
        }
        System.out.println(avg);
    }
}


import java.io.*;
import java.lang.*;
import java.util.*;

public class C2 {

    public static void main (String args[]) {

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();
        int a[] = new int[n];
        a[0] = sc.nextInt();
        for (int i = 1 ; i < n ; i++) {
            a[i] = sc.nextInt() + a[i-1];
        }
        float avg = 0;
        for (int i = 0 ; i < n ; i++) {
            for (int j = 0 ; j < n ; j++) {
                if (j - i >= k - 1) {
                    float c = 0;
                    if (i == 0) {
                        c = a[j];
                    }
                    else {
                        c = a[j] - a[i-1];
                    }
                    c = c / (j + 1 - i);
                    avg = Math.max(c, avg);
                }
            }
        }
        System.out.println(avg);
    }
}


import java.io.*;
import java.lang.*;
import java.util.*;

public class C2 {

    public static void main (String args[]) {

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();
        int a[] = new int[n];
        a[0] = sc.nextInt();
        for (int i = 1 ; i < n ; i++) {
            a[i] = sc.nextInt() + ar[i-1];
        }
        float avg = 0;
        for (int i = 0 ; i < n ; i++) {
            for (int j = 0 ; j < n ; j++) {
                if (j - i < k - 1) {
                    continue;
                }
                float c = a[j] - a[i];
                c = c / (j + 1 - i);
                avg = Math.max(c, avg);
            }
        }
        System.out.println(avg);
    }
}


import java.io.*;
import java.lang.*;
import java.util.*;

public class C {

    public static void main (String args[]) {

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();
        int a[] = new int[n];
        for (int i = 0 ; i < n ; i++) {
            a[i] = sc.nextInt();
        }
        SegmentTree _st = new SegmentTree(a, n);
        float avg = 0;
        for (int i = 0 ; i < n ; i++) {
            for (int j = i + k - 1 ; j < n ; j++) {
                float c = _st.qry(0, n - 1, i, j, 0);
                c = c / (j + 1 - i);
                avg = Math.max(c, avg);
            }
        }
        System.out.printf("%.15f\n", avg);
    }
}

class SegmentTree {

    int st[];

    SegmentTree(int arr[], int n) {
        int x = (int) (Math.ceil(Math.log(n) / Math.log(2)));
        int max_size = 2 * (int) Math.pow(2, x) - 1;
        st = new int[max_size];
        build(arr, 0, n - 1, 0);
    }

    int build(int arr[], int f, int t, int i) {
        if (f == t) {
            st[i] = arr[f];
            return arr[f];
        }
        int mid = (f + t) / 2;
        st[i] = build(arr, f, mid, i * 2 + 1) + build(arr, mid + 1, t, i * 2 + 2);
        return st[i];
    }

    int qry(int f, int t, int qf, int qt, int i) {
        if (qf <= f && qt >= t)
            return st[i];
        if (t < qf || f > qt)
            return 0;
        int mid = (f + t) / 2;
        return qry(f, mid, qf, qt, 2*i+1) + qry(mid + 1, t, qf, qt, 2*i+2);
    }
}


import java.io.*;
import java.lang.*;
import java.util.*;

public class C2 {

    public static void main (String args[]) {

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();
        int a[] = new int[n];
        a[0] = sc.nextInt();
        for (int i = 1 ; i < n ; i++) {
            a[i] = sc.nextInt() + a[i-1];
        }
        float avg = 0;
        for (int i = 0 ; i < n ; i++) {
            for (int j = 0 ; j < n ; j++) {
                if (j - i < k - 1) {
                    continue;
                }
                float c = a[j] - a[i];
                c = c / (j + 1 - i);
                avg = Math.max(c, avg);
            }
        }
        System.out.println(avg);
    }
}


import java.io.*;
import java.lang.*;
import java.util.*;

public class C2 {

    public static void main (String args[]) {

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();
        int a[] = new int[n];
        for (int i = 0 ; i < n ; i++) {
            a[i] = sc.nextInt();
        }
        float avg = 0;
        for (int i = 0 ; i < n ; i++) {
            for (int j = i + k - 1 ; j < n ; j++) {
                float c = 0;
                for (int x = i ; x <= j ; c++) {
                    c += a[x];
                }
                c = c / (j + 1 - i);
                avg = Math.max(c, avg);
            }
        }
        System.out.println(avg);
    }
}


import java.io.*;
import java.util.*;

public class Main2 {
    int arr[];
    int n,k;

    public void solve(){
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        k = in.nextInt();
        arr = new int[n+1];
        arr[0] = 0;
        for (int i = 1; i < n+1; i++) {
            arr[i] = arr[i-1] + in.nextInt();
        }
        double max = -1;
        for (int i = k; i < n + 1 ; i++) {
            max = max(comb(i),max);
        }
        System.out.println(max);
    }

    private double max(double max, double max1) {
        return max > max1?max:max1;
    }

    public double comb(int k){
        double max = -1;
        for (int i = 1; i < n - k + 2; i++) {
           max=max(((double)arr[i+k-1] - arr[i-1])/k,max);
        }
        return max;
    }

    public static void main(String args[]) {
        new Main2().solve();
    }
}


import java.io.*;
import java.util.*;

public class Main2 {
    int arr[];
    int n,k;

    public void solve(){
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        k = in.nextInt();
        arr = new int[n+1];
        arr[0] = 0;
        for (int i = 1; i < n+1; i++) {
            arr[i] = arr[i-1] + in.nextInt();
        }
        double max = -1;
        for (int i = k; i < n + 1 ; i++) {
            max = max(comb(i),max);
        }
        System.out.println(max);
    }

    private double max(double max, double max1) {
        return max > max1?max:max1;
    }

    public double comb(int k){
        double max = -1;
        for (int i = 1; i < n - k + 1; i++) {
           max=max(((double)arr[i+k-1] - arr[i-1])/k,max);
        }
        return max;
    }

    public static void main(String args[]) {
        new Main2().solve();
    }
}


import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.*;

public class Main2 {
    int arr[];
    int n,k;

    public void solve(){
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        k = in.nextInt();
        arr = new int[n];
        for (int i = 0; i < k; i++) {
            arr[i] = in.nextInt();
        }
        double max = -1;
        for (int i = k; i < n + 1 ; i++) {
            max = Math.max(Collections.max(comb(i)),max);
        }
        System.out.println(max);
    }

    public ArrayList<Double> comb(int k){
        ArrayList<Double> a = new ArrayList<>();
        for (int i = 0; i < n - k + 1; i++) {
            a.add(sum(i,i+k)/k);
        }
        return a;
    }

    public double sum(int i, int i1) {
        double s = 0;
        for (; i < i1; i++) {
            s+= arr[i];
        }
        return s;
    }

    public static void main(String args[]) {
        new Main2().solve();
    }
}


import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.*;

public class Main2 {
    int arr[];
    int n,k;

    public void solve(){
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        k = in.nextInt();
        arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = in.nextInt();
        }
        double max = -1;
        for (int i = k; i < n + 1 ; i++) {
            max = max(Collections.max(comb(i)),max);
        }
        System.out.println(max);
    }

    private double max(Double max, double max1) {
        return max > max1?max:max1;
    }

    public ArrayList<Double> comb(int k){
        ArrayList<Double> a = new ArrayList<>();
        for (int i = 0; i < n - k + 1; i++) {
            a.add((double) (sum(i,i+k)/k));
        }
        return a;
    }

    public double sum(int begin,int end){
        double s = 0;
        while(begin < end){
            s += arr[begin];
            begin++;
        }
        return s;
    }

    public static void main(String args[]) {
        new Main2().solve();
    }
}


import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		double max=0.0;
       int n=sc.nextInt();//总个数
        int k=sc.nextInt();
        int a[]=new int[(int) n];
        for(int i=0;i<n;i++)
        {
        	a[i]=sc.nextInt();
        }
       int dp[][]=new int [n+1][n];//长度为k,第n个数截至的总和/
        //计算长度为1到长度为k的
        for(int i=0;i<n;i++)
        {dp[1][i]=a[i];}
        for(int i=2;i<n+1;i++)
        {
        	for(int j=i-1;j<n;j++)
        	{dp[i][j]=dp[i-1][j-1]+a[j];
        	if(i>=k)
        	{
        		if((double)dp[i][j]/i>max)
        		{
        			max=(double)dp[i][j]/i;
        		}
        	}
        	}
        }
        if(k==1)
        {
        	for(int i=0;i<n;i++)
        	{
        		if(a[i]>max)
        		{max=a[i];}
        	}
        }
//        for(int i=0;i<n;i++)
//        {
//        	System.out.print(dp[4][i]+" ");
//        }
        System.out.println(max);
	}
}


import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		double max=0.0;
       int n=sc.nextInt();//总个数
        int k=sc.nextInt();
        int a[]=new int[(int) n];
        for(int i=0;i<n;i++)
        {
        	a[i]=sc.nextInt();
        }
       int dp[][]=new int [n+1][n];//长度为k,第n个数截至的总和/
        //计算长度为1到长度为k的
        for(int i=0;i<n;i++)
        {dp[1][i]=a[i];}
        for(int i=2;i<n+1;i++)
        {
        	for(int j=i-1;j<n;j++)
        	{dp[i][j]=dp[i-1][j-1]+a[j];
        	if(i>=k)
        	{
        		if(dp[i][j]/i>max)
        		{
        			max=(double)dp[i][j]/i;
        		}
        	}
        	}
        }
        if(k==1)
        {
        	for(int i=0;i<n;i++)
        	{
        		if(a[i]>max)
        		{max=a[i];}
        	}
        }
//        for(int i=0;i<n;i++)
//        {
//        	System.out.print(dp[4][i]+" ");
//        }
        System.out.println(max);
	}
}


import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		double max=0.0;
       int n=sc.nextInt();//总个数
        int k=sc.nextInt();
        int a[]=new int[(int) n];
        for(int i=0;i<n;i++)
        {
        	a[i]=sc.nextInt();
        }
       int dp[][]=new int [n+1][n];//长度为k,第n个数截至的总和/
        //计算长度为1到长度为k的
        for(int i=0;i<n;i++)
        {dp[1][i]=a[i];}
        for(int i=2;i<n+1;i++)
        {
        	for(int j=i-1;j<n;j++)
        	{dp[i][j]=dp[i-1][j-1]+a[j];
        	if(i>=k)
        	{
        		if(dp[i][j]/i>max)
        		{
        			max=(double)dp[i][j]/i;
        		}
        	}
        	}
        }
//        for(int i=0;i<n;i++)
//        {
//        	System.out.print(dp[4][i]+" ");
//        }
        System.out.println(max);
	}

}


import java.util.Scanner;

public class Main{

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		double max=0.0;
       int n=sc.nextInt();//总个数
        int k=sc.nextInt();
        int a[]=new int[(int) n];
        for(int i=0;i<n;i++)
        {
        	a[i]=sc.nextInt();
        }
       int dp[][]=new int [n+1][n];//长度为k,第n个数截至的总和/
        //计算长度为1到长度为k的
        for(int i=0;i<n;i++)
        {dp[1][i]=a[i];}
        for(int i=2;i<n+1;i++)
        {
        	for(int j=i-1;j<n;j++)
        	{dp[i][j]=dp[i-1][j-1]+a[j];
        	if(i>=k)
        	{
        		if(dp[i][j]/i>max)
        		{
        			max=dp[i][j]/i;
        		}
        	}
        	}
        }
//        for(int i=0;i<n;i++)
//        {
//        	System.out.print(dp[4][i]+" ");
//        }
        System.out.println(max);
	}

}


import java.io.*;
import java.math.BigInteger;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.net.ssl.SSLContext;

public class Main
{
   static long mod=(long)(1e+9) + 7;
   static int[] sieve;
   static ArrayList<Integer> primes;

   public static void main(String[] args) throws java.lang.Exception
   {
	     fast s = new fast();
	     PrintWriter out=new PrintWriter(System.out);
	     Scanner sc=new Scanner(System.in);
	     StringBuilder fans = new StringBuilder();

	     int n=s.nextInt();
	     int k=s.nextInt();

	     int a[]=new int[n];

	     for(int i=0;i<n;i++) a[i]=s.nextInt();

	     int sum[]=new int[n];

	     sum[0]=a[0];

	     for(int i=1;i<n;i++) sum[i]=a[i]+sum[i-1];

	     double max=Double.MIN_VALUE;

	     for(int i=k-1;k<n;k++)
	     {
	    	 int size=i+1;
	    	 for(int j=i;j<=n-i;j++)
	    	 {
	    		 if(j==i)
	    		 {
	    			 double avg=((double)sum[j])/(double)(size);
		    		 max=Math.max(max, avg);
	    		 }
	    		 else
	    		 {
	    		 double avg=((double)sum[j]-sum[j-i])/(double)(size);
	    		 max=Math.max(max, avg);
	    		 }
	    	 }
	     }
	     System.out.println(max);
   }

   static class fast {
		private InputStream i;
		private byte[] buf = new byte[1024];
		private int curChar;
		private int numChars;

		public static boolean next_permutation(int a[])
		   {
			   int i=0,j=0;int index=-1;
			   int n=a.length;

			   for(i=0;i<n-1;i++)
				   if(a[i]<a[i+1]) index=i;

			   if(index==-1) return false;
			   i=index;

			   for(j=i+1;j<n && a[i]<a[j];j++);

			   int temp=a[i];
			   a[i]=a[j-1];
			   a[j-1]=temp;

			   for(int p=i+1,q=n-1;p<q;p++,q--)
			   {
				   temp=a[p];
				   a[p]=a[q];
				   a[q]=temp;
			   }

			   return true;
		   }

		public static void division(char ch[],int divisor)
		   {
			   int div=Character.getNumericValue(ch[0]); int mul=10;int remainder=0;
			   StringBuilder quotient=new StringBuilder("");
			   for(int i=1;i<ch.length;i++)
			   {
				   div=div*mul+Character.getNumericValue(ch[i]);
				   if(div<divisor) {quotient.append("0");continue;}
				   quotient.append(div/divisor);
				   div=div%divisor;mul=10;

			   }
			   remainder=div;
			   while(quotient.charAt(0)=='0')quotient.deleteCharAt(0);
			   System.out.println(quotient+" "+remainder);
		   }

		public static void sieve(int size)
		{
			sieve=new int[size+1];
			primes=new ArrayList<Integer>();
			sieve[1]=1;
			for(int i=2;i<=Math.sqrt(size);i++)
			{
				if(sieve[i]==0)
				 {
					for(int j=i*i;j<size;j+=i) sieve[j]=1;
				 }
			}

			for(int i=2;i<=size;i++)
			{
				if(sieve[i]==0) primes.add(i);
			}
		}
		public static long pow(long n, long b, long MOD)
		   {
		       long x=1;long y=n;
		       while(b > 0)
		       {
		           if(b%2 == 1)
		           {
		               x=x*y;
		               if(x>MOD) x=x%(MOD);
		           }
		           y = y*y;
		           if(y>MOD) y=y%(MOD);
		           b >>= 1;
		       }
		       return x;
		   }

		 public static int upper(Integer[] a,int start,int end,int key)
		 {
			   int mid=(start+end)>>1;
			   if(start==end && a[mid]<key) {return -1;}
			   if(start>end) return -1;

			   if(a[mid]>=key && (((mid-1)>=0 && a[mid-1]<key) || (mid-1)==0)) return mid;
			   else if(a[mid]== key && (mid-1)>=0 && a[mid-1]==key) return lower(a,start,mid-1,key);
			   else if(key>a[mid]) return lower(a,mid+1,end,key);
			   else return lower(a,start,mid-1,key);
		}

		 public static int lower(Integer a[],int start,int end,int key)
		 {
			   int mid=(start+end)>>1;
			   if(start==end && a[mid]>key) {return -1;}
			   if(start>end) return -1;

			   if(a[mid]<=key && (((mid+1)<a.length && a[mid+1]>key) || (mid+1)==a.length)) return mid;
			   else if(a[mid]== key && (mid+1)<a.length && a[mid+1]==key) return upper(a,mid+1,end,key);
			   else if(key>=a[mid]) return upper(a,mid+1,end,key);
			   else return upper(a,start,mid-1,key);
		}

		public int gcd(int a,int b)
		{
			if(a==0) return b;
			return gcd(b%a,a);
		}
		public fast() {
			this(System.in);
		}
		public fast(InputStream is) {
			i = is;
		}
		public int read() {
			if (numChars == -1)
				throw new InputMismatchException();
			if (curChar >= numChars) {
				curChar = 0;
				try {
					numChars = i.read(buf);
				} catch (IOException e) {
					throw new InputMismatchException();
				}
				if (numChars <= 0)
					return -1;
			}
			return buf[curChar++];
		}
		public String nextLine() {
			int c = read();
			while (isSpaceChar(c))
				c = read();
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = read();
			} while (!isEndOfLine(c));
			return res.toString();
		}
		public String nextString() {
     		int c = read();
			while (isSpaceChar(c))
				c = read();
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = read();
			} while (!isSpaceChar(c));
			return res.toString();
		}
		public long nextLong() {
			int c = read();
			while (isSpaceChar(c))
				c = read();
			int sgn = 1;
			if (c == '-') {
				sgn = -1;
				c = read();
			}
			long res = 0;
			do {
				if (c < '0' || c > '9')
					throw new InputMismatchException();
				res *= 10;
				res += c - '0';
				c = read();
			} while (!isSpaceChar(c));
			return res * sgn;
		}
		public int nextInt() {
			int c = read();
			while (isSpaceChar(c))
				c = read();
			int sgn = 1;
			if (c == '-') {
				sgn = -1;
				c = read();
			}
			int res = 0;
			do {
				if (c < '0' || c > '9')
					throw new InputMismatchException();
				res *= 10;
				res += c - '0';
				c = read();
			} while (!isSpaceChar(c));
			return res * sgn;
		}
		public boolean isSpaceChar(int c) {
			return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
		}
		public boolean isEndOfLine(int c) {
			return c == '\n' || c == '\r' || c == -1;
		}

	}
}


import java.io.*;
import java.math.BigInteger;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.net.ssl.SSLContext;

public class Main
{
   static long mod=(long)(1e+9) + 7;
   static int[] sieve;
   static ArrayList<Integer> primes;

   public static void main(String[] args) throws java.lang.Exception
   {
	     fast s = new fast();
	     PrintWriter out=new PrintWriter(System.out);
	     Scanner sc=new Scanner(System.in);
	     StringBuilder fans = new StringBuilder();

	     int n=s.nextInt();
	     int k=s.nextInt();

	     int a[]=new int[n];

	     for(int i=0;i<n;i++) a[i]=s.nextInt();

	     int sum[]=new int[n];

	     sum[0]=a[0];

	     for(int i=1;i<n;i++) sum[i]=a[i]+sum[i-1];

	     double max=Double.MIN_VALUE;

	     for(int i=k;i<=n;i++)
	     {
	    	 int size=i;
	    	 for(int j=i-1;j<n;j++)
	    	 {
	    		 if((j+1)==i)
	    		 {
	    			 double avg=((double)sum[j])/(double)(size);
		    		 max=Math.max(max, avg);
	    		 }
	    		 else
	    		 {
	    		 double avg=((double)sum[j]-sum[j-i])/(double)(size);
	    		 max=Math.max(max, avg);
	    		 }
	    	 }
	     }
	     System.out.println(max);
   }

   static class fast {
		private InputStream i;
		private byte[] buf = new byte[1024];
		private int curChar;
		private int numChars;

		public static boolean next_permutation(int a[])
		   {
			   int i=0,j=0;int index=-1;
			   int n=a.length;

			   for(i=0;i<n-1;i++)
				   if(a[i]<a[i+1]) index=i;

			   if(index==-1) return false;
			   i=index;

			   for(j=i+1;j<n && a[i]<a[j];j++);

			   int temp=a[i];
			   a[i]=a[j-1];
			   a[j-1]=temp;

			   for(int p=i+1,q=n-1;p<q;p++,q--)
			   {
				   temp=a[p];
				   a[p]=a[q];
				   a[q]=temp;
			   }

			   return true;
		   }

		public static void division(char ch[],int divisor)
		   {
			   int div=Character.getNumericValue(ch[0]); int mul=10;int remainder=0;
			   StringBuilder quotient=new StringBuilder("");
			   for(int i=1;i<ch.length;i++)
			   {
				   div=div*mul+Character.getNumericValue(ch[i]);
				   if(div<divisor) {quotient.append("0");continue;}
				   quotient.append(div/divisor);
				   div=div%divisor;mul=10;

			   }
			   remainder=div;
			   while(quotient.charAt(0)=='0')quotient.deleteCharAt(0);
			   System.out.println(quotient+" "+remainder);
		   }

		public static void sieve(int size)
		{
			sieve=new int[size+1];
			primes=new ArrayList<Integer>();
			sieve[1]=1;
			for(int i=2;i<=Math.sqrt(size);i++)
			{
				if(sieve[i]==0)
				 {
					for(int j=i*i;j<size;j+=i) sieve[j]=1;
				 }
			}

			for(int i=2;i<=size;i++)
			{
				if(sieve[i]==0) primes.add(i);
			}
		}
		public static long pow(long n, long b, long MOD)
		   {
		       long x=1;long y=n;
		       while(b > 0)
		       {
		           if(b%2 == 1)
		           {
		               x=x*y;
		               if(x>MOD) x=x%(MOD);
		           }
		           y = y*y;
		           if(y>MOD) y=y%(MOD);
		           b >>= 1;
		       }
		       return x;
		   }

		 public static int upper(Integer[] a,int start,int end,int key)
		 {
			   int mid=(start+end)>>1;
			   if(start==end && a[mid]<key) {return -1;}
			   if(start>end) return -1;

			   if(a[mid]>=key && (((mid-1)>=0 && a[mid-1]<key) || (mid-1)==0)) return mid;
			   else if(a[mid]== key && (mid-1)>=0 && a[mid-1]==key) return lower(a,start,mid-1,key);
			   else if(key>a[mid]) return lower(a,mid+1,end,key);
			   else return lower(a,start,mid-1,key);
		}

		 public static int lower(Integer a[],int start,int end,int key)
		 {
			   int mid=(start+end)>>1;
			   if(start==end && a[mid]>key) {return -1;}
			   if(start>end) return -1;

			   if(a[mid]<=key && (((mid+1)<a.length && a[mid+1]>key) || (mid+1)==a.length)) return mid;
			   else if(a[mid]== key && (mid+1)<a.length && a[mid+1]==key) return upper(a,mid+1,end,key);
			   else if(key>=a[mid]) return upper(a,mid+1,end,key);
			   else return upper(a,start,mid-1,key);
		}

		public int gcd(int a,int b)
		{
			if(a==0) return b;
			return gcd(b%a,a);
		}
		public fast() {
			this(System.in);
		}
		public fast(InputStream is) {
			i = is;
		}
		public int read() {
			if (numChars == -1)
				throw new InputMismatchException();
			if (curChar >= numChars) {
				curChar = 0;
				try {
					numChars = i.read(buf);
				} catch (IOException e) {
					throw new InputMismatchException();
				}
				if (numChars <= 0)
					return -1;
			}
			return buf[curChar++];
		}
		public String nextLine() {
			int c = read();
			while (isSpaceChar(c))
				c = read();
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = read();
			} while (!isEndOfLine(c));
			return res.toString();
		}
		public String nextString() {
     		int c = read();
			while (isSpaceChar(c))
				c = read();
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = read();
			} while (!isSpaceChar(c));
			return res.toString();
		}
		public long nextLong() {
			int c = read();
			while (isSpaceChar(c))
				c = read();
			int sgn = 1;
			if (c == '-') {
				sgn = -1;
				c = read();
			}
			long res = 0;
			do {
				if (c < '0' || c > '9')
					throw new InputMismatchException();
				res *= 10;
				res += c - '0';
				c = read();
			} while (!isSpaceChar(c));
			return res * sgn;
		}
		public int nextInt() {
			int c = read();
			while (isSpaceChar(c))
				c = read();
			int sgn = 1;
			if (c == '-') {
				sgn = -1;
				c = read();
			}
			int res = 0;
			do {
				if (c < '0' || c > '9')
					throw new InputMismatchException();
				res *= 10;
				res += c - '0';
				c = read();
			} while (!isSpaceChar(c));
			return res * sgn;
		}
		public boolean isSpaceChar(int c) {
			return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
		}
		public boolean isEndOfLine(int c) {
			return c == '\n' || c == '\r' || c == -1;
		}

	}
}


import java.io.*;
import java.math.BigInteger;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.net.ssl.SSLContext;

public class Main
{
   static long mod=(long)(1e+9) + 7;
   static int[] sieve;
   static ArrayList<Integer> primes;

   public static void main(String[] args) throws java.lang.Exception
   {
	     fast s = new fast();
	     PrintWriter out=new PrintWriter(System.out);
	     Scanner sc=new Scanner(System.in);
	     StringBuilder fans = new StringBuilder();

	     int n=s.nextInt();
	     int k=s.nextInt();

	     int a[]=new int[n];

	     for(int i=0;i<n;i++) a[i]=s.nextInt();

	     int sum[]=new int[n];

	     sum[0]=a[0];

	     for(int i=1;i<n;i++) sum[i]=a[i]+sum[i-1];

	     double max=Double.MIN_VALUE;

	     if(k==1)
	     {
	    	 for(int i=0;i<n;i++)
	    		 max=Math.max(max, a[i]);
	    	 System.out.println(max);
	    	 return;
	     }
	     for(int i=k-1;i<n;i++)
	     {
	    	 int size=i+1;
	    	 for(int j=i;j<n;j++)
	    	 {
	    		 if(j==i)
	    		 {
	    			 double avg=((double)sum[j])/(double)(size);
		    		 max=Math.max(max, avg);
	    		 }
	    		 else
	    		 {
	    		 double avg=((double)sum[j]-sum[j-i])/(double)(size);
	    		 max=Math.max(max, avg);
	    		 }
	    	 }
	     }
	     System.out.println(max);
   }

   static class fast {
		private InputStream i;
		private byte[] buf = new byte[1024];
		private int curChar;
		private int numChars;

		public static boolean next_permutation(int a[])
		   {
			   int i=0,j=0;int index=-1;
			   int n=a.length;

			   for(i=0;i<n-1;i++)
				   if(a[i]<a[i+1]) index=i;

			   if(index==-1) return false;
			   i=index;

			   for(j=i+1;j<n && a[i]<a[j];j++);

			   int temp=a[i];
			   a[i]=a[j-1];
			   a[j-1]=temp;

			   for(int p=i+1,q=n-1;p<q;p++,q--)
			   {
				   temp=a[p];
				   a[p]=a[q];
				   a[q]=temp;
			   }

			   return true;
		   }

		public static void division(char ch[],int divisor)
		   {
			   int div=Character.getNumericValue(ch[0]); int mul=10;int remainder=0;
			   StringBuilder quotient=new StringBuilder("");
			   for(int i=1;i<ch.length;i++)
			   {
				   div=div*mul+Character.getNumericValue(ch[i]);
				   if(div<divisor) {quotient.append("0");continue;}
				   quotient.append(div/divisor);
				   div=div%divisor;mul=10;

			   }
			   remainder=div;
			   while(quotient.charAt(0)=='0')quotient.deleteCharAt(0);
			   System.out.println(quotient+" "+remainder);
		   }

		public static void sieve(int size)
		{
			sieve=new int[size+1];
			primes=new ArrayList<Integer>();
			sieve[1]=1;
			for(int i=2;i<=Math.sqrt(size);i++)
			{
				if(sieve[i]==0)
				 {
					for(int j=i*i;j<size;j+=i) sieve[j]=1;
				 }
			}

			for(int i=2;i<=size;i++)
			{
				if(sieve[i]==0) primes.add(i);
			}
		}
		public static long pow(long n, long b, long MOD)
		   {
		       long x=1;long y=n;
		       while(b > 0)
		       {
		           if(b%2 == 1)
		           {
		               x=x*y;
		               if(x>MOD) x=x%(MOD);
		           }
		           y = y*y;
		           if(y>MOD) y=y%(MOD);
		           b >>= 1;
		       }
		       return x;
		   }

		 public static int upper(Integer[] a,int start,int end,int key)
		 {
			   int mid=(start+end)>>1;
			   if(start==end && a[mid]<key) {return -1;}
			   if(start>end) return -1;

			   if(a[mid]>=key && (((mid-1)>=0 && a[mid-1]<key) || (mid-1)==0)) return mid;
			   else if(a[mid]== key && (mid-1)>=0 && a[mid-1]==key) return lower(a,start,mid-1,key);
			   else if(key>a[mid]) return lower(a,mid+1,end,key);
			   else return lower(a,start,mid-1,key);
		}

		 public static int lower(Integer a[],int start,int end,int key)
		 {
			   int mid=(start+end)>>1;
			   if(start==end && a[mid]>key) {return -1;}
			   if(start>end) return -1;

			   if(a[mid]<=key && (((mid+1)<a.length && a[mid+1]>key) || (mid+1)==a.length)) return mid;
			   else if(a[mid]== key && (mid+1)<a.length && a[mid+1]==key) return upper(a,mid+1,end,key);
			   else if(key>=a[mid]) return upper(a,mid+1,end,key);
			   else return upper(a,start,mid-1,key);
		}

		public int gcd(int a,int b)
		{
			if(a==0) return b;
			return gcd(b%a,a);
		}
		public fast() {
			this(System.in);
		}
		public fast(InputStream is) {
			i = is;
		}
		public int read() {
			if (numChars == -1)
				throw new InputMismatchException();
			if (curChar >= numChars) {
				curChar = 0;
				try {
					numChars = i.read(buf);
				} catch (IOException e) {
					throw new InputMismatchException();
				}
				if (numChars <= 0)
					return -1;
			}
			return buf[curChar++];
		}
		public String nextLine() {
			int c = read();
			while (isSpaceChar(c))
				c = read();
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = read();
			} while (!isEndOfLine(c));
			return res.toString();
		}
		public String nextString() {
     		int c = read();
			while (isSpaceChar(c))
				c = read();
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = read();
			} while (!isSpaceChar(c));
			return res.toString();
		}
		public long nextLong() {
			int c = read();
			while (isSpaceChar(c))
				c = read();
			int sgn = 1;
			if (c == '-') {
				sgn = -1;
				c = read();
			}
			long res = 0;
			do {
				if (c < '0' || c > '9')
					throw new InputMismatchException();
				res *= 10;
				res += c - '0';
				c = read();
			} while (!isSpaceChar(c));
			return res * sgn;
		}
		public int nextInt() {
			int c = read();
			while (isSpaceChar(c))
				c = read();
			int sgn = 1;
			if (c == '-') {
				sgn = -1;
				c = read();
			}
			int res = 0;
			do {
				if (c < '0' || c > '9')
					throw new InputMismatchException();
				res *= 10;
				res += c - '0';
				c = read();
			} while (!isSpaceChar(c));
			return res * sgn;
		}
		public boolean isSpaceChar(int c) {
			return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
		}
		public boolean isEndOfLine(int c) {
			return c == '\n' || c == '\r' || c == -1;
		}

	}
}


import java.io.*;
import java.math.BigInteger;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.net.ssl.SSLContext;

public class Main
{
   static long mod=(long)(1e+9) + 7;
   static int[] sieve;
   static ArrayList<Integer> primes;

   public static void main(String[] args) throws java.lang.Exception
   {
	     fast s = new fast();
	     PrintWriter out=new PrintWriter(System.out);
	     Scanner sc=new Scanner(System.in);
	     StringBuilder fans = new StringBuilder();

	     int n=s.nextInt();
	     int k=s.nextInt();

	     int a[]=new int[n];

	     for(int i=0;i<n;i++) a[i]=s.nextInt();

	     int sum[]=new int[n];

	     sum[0]=a[0];

	     for(int i=1;i<n;i++) sum[i]=a[i]+sum[i-1];

	     double max=Double.MIN_VALUE;

	     for(int i=k-1;i<n;i++)
	     {
	    	 int size=i+1;
	    	 for(int j=i;j<n;j++)
	    	 {
	    		 if(j==i)
	    		 {
	    			 double avg=((double)sum[j])/(double)(size);
		    		 max=Math.max(max, avg);
	    		 }
	    		 else
	    		 {
	    		 double avg=((double)sum[j]-sum[j-i])/(double)(size);
	    		 max=Math.max(max, avg);
	    		 }
	    	 }
	     }
	     System.out.println(max);
   }

   static class fast {
		private InputStream i;
		private byte[] buf = new byte[1024];
		private int curChar;
		private int numChars;

		public static boolean next_permutation(int a[])
		   {
			   int i=0,j=0;int index=-1;
			   int n=a.length;

			   for(i=0;i<n-1;i++)
				   if(a[i]<a[i+1]) index=i;

			   if(index==-1) return false;
			   i=index;

			   for(j=i+1;j<n && a[i]<a[j];j++);

			   int temp=a[i];
			   a[i]=a[j-1];
			   a[j-1]=temp;

			   for(int p=i+1,q=n-1;p<q;p++,q--)
			   {
				   temp=a[p];
				   a[p]=a[q];
				   a[q]=temp;
			   }

			   return true;
		   }

		public static void division(char ch[],int divisor)
		   {
			   int div=Character.getNumericValue(ch[0]); int mul=10;int remainder=0;
			   StringBuilder quotient=new StringBuilder("");
			   for(int i=1;i<ch.length;i++)
			   {
				   div=div*mul+Character.getNumericValue(ch[i]);
				   if(div<divisor) {quotient.append("0");continue;}
				   quotient.append(div/divisor);
				   div=div%divisor;mul=10;

			   }
			   remainder=div;
			   while(quotient.charAt(0)=='0')quotient.deleteCharAt(0);
			   System.out.println(quotient+" "+remainder);
		   }

		public static void sieve(int size)
		{
			sieve=new int[size+1];
			primes=new ArrayList<Integer>();
			sieve[1]=1;
			for(int i=2;i<=Math.sqrt(size);i++)
			{
				if(sieve[i]==0)
				 {
					for(int j=i*i;j<size;j+=i) sieve[j]=1;
				 }
			}

			for(int i=2;i<=size;i++)
			{
				if(sieve[i]==0) primes.add(i);
			}
		}
		public static long pow(long n, long b, long MOD)
		   {
		       long x=1;long y=n;
		       while(b > 0)
		       {
		           if(b%2 == 1)
		           {
		               x=x*y;
		               if(x>MOD) x=x%(MOD);
		           }
		           y = y*y;
		           if(y>MOD) y=y%(MOD);
		           b >>= 1;
		       }
		       return x;
		   }

		 public static int upper(Integer[] a,int start,int end,int key)
		 {
			   int mid=(start+end)>>1;
			   if(start==end && a[mid]<key) {return -1;}
			   if(start>end) return -1;

			   if(a[mid]>=key && (((mid-1)>=0 && a[mid-1]<key) || (mid-1)==0)) return mid;
			   else if(a[mid]== key && (mid-1)>=0 && a[mid-1]==key) return lower(a,start,mid-1,key);
			   else if(key>a[mid]) return lower(a,mid+1,end,key);
			   else return lower(a,start,mid-1,key);
		}

		 public static int lower(Integer a[],int start,int end,int key)
		 {
			   int mid=(start+end)>>1;
			   if(start==end && a[mid]>key) {return -1;}
			   if(start>end) return -1;

			   if(a[mid]<=key && (((mid+1)<a.length && a[mid+1]>key) || (mid+1)==a.length)) return mid;
			   else if(a[mid]== key && (mid+1)<a.length && a[mid+1]==key) return upper(a,mid+1,end,key);
			   else if(key>=a[mid]) return upper(a,mid+1,end,key);
			   else return upper(a,start,mid-1,key);
		}

		public int gcd(int a,int b)
		{
			if(a==0) return b;
			return gcd(b%a,a);
		}
		public fast() {
			this(System.in);
		}
		public fast(InputStream is) {
			i = is;
		}
		public int read() {
			if (numChars == -1)
				throw new InputMismatchException();
			if (curChar >= numChars) {
				curChar = 0;
				try {
					numChars = i.read(buf);
				} catch (IOException e) {
					throw new InputMismatchException();
				}
				if (numChars <= 0)
					return -1;
			}
			return buf[curChar++];
		}
		public String nextLine() {
			int c = read();
			while (isSpaceChar(c))
				c = read();
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = read();
			} while (!isEndOfLine(c));
			return res.toString();
		}
		public String nextString() {
     		int c = read();
			while (isSpaceChar(c))
				c = read();
			StringBuilder res = new StringBuilder();
			do {
				res.appendCodePoint(c);
				c = read();
			} while (!isSpaceChar(c));
			return res.toString();
		}
		public long nextLong() {
			int c = read();
			while (isSpaceChar(c))
				c = read();
			int sgn = 1;
			if (c == '-') {
				sgn = -1;
				c = read();
			}
			long res = 0;
			do {
				if (c < '0' || c > '9')
					throw new InputMismatchException();
				res *= 10;
				res += c - '0';
				c = read();
			} while (!isSpaceChar(c));
			return res * sgn;
		}
		public int nextInt() {
			int c = read();
			while (isSpaceChar(c))
				c = read();
			int sgn = 1;
			if (c == '-') {
				sgn = -1;
				c = read();
			}
			int res = 0;
			do {
				if (c < '0' || c > '9')
					throw new InputMismatchException();
				res *= 10;
				res += c - '0';
				c = read();
			} while (!isSpaceChar(c));
			return res * sgn;
		}
		public boolean isSpaceChar(int c) {
			return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
		}
		public boolean isEndOfLine(int c) {
			return c == '\n' || c == '\r' || c == -1;
		}

	}
}


import java.util.Arrays;
import java.util.Scanner;

public class cfq3jul {

	static float intensity(int[] arr,  int start, int end) {
		float sum =0;
		for(int i=start;i<=end;i++) { sum += arr[i];}
		float avg = sum/(end-start+1);
		return avg;
	}

	public static void main(String[] args) {
		Scanner c = new Scanner(System.in);
		int n = c.nextInt(); int size=0;
		int k = c.nextInt();
		int a[] = new int[n];
		for(int i=0;i<n;i++) {
			a[i] = c.nextInt();
		}
		for(int i=k;i<=n;i++) {
			size += n-i+1;
		}
		float heat[] = new float[size]; int s=0;
		for(int i=k;i<=n;i++) {
			for(int j=0;j<n-i+1;j++) {
				heat[s] = intensity(a,j,j+i-1);
				//System.out.println(heat[s]);
				s++;
			}
		}

		Arrays.sort(heat);
		//String P = Arrays.toString(heat);
		//System.out.println(P);
		float maximum = heat[heat.length-1];
		System.out.println(maximum);

	}

}


import java.util.Arrays;
import java.util.Scanner;

public class cfq3jul {

	static float intensity(int[] arr,  int start, int end) {
		float sum =0;
		for(int i=start;i<=end;i++) { sum += arr[i];}
		float avg = sum/(end-start+1);
		return avg;
	}

	public static void main(String[] args) {
		Scanner c = new Scanner(System.in);
		int n = c.nextInt(); int size=0;
		int k = c.nextInt();
		int a[] = new int[n];
		for(int i=0;i<n;i++) {
			a[i] = c.nextInt();
		}
		for(int i=k;i<=n;i++) {
			size += n-i+1;
		}
		float heat[] = new float[size]; int s=0;
		for(int i=k;i<=n;i++) {
			for(int j=0;j<n-i+1;j++) {
				heat[s] = intensity(a,j,j+i-1);
				//System.out.println(heat[s]);
				s++;
			}
		}

		Arrays.sort(heat);
		float maximum = heat[heat.length-1];
		System.out.println(maximum);

	}

}


import java.util.Arrays;
import java.util.Scanner;

public class cfq3jul {

	public static void main(String[] args) {
		Scanner c = new Scanner(System.in);
		int n = c.nextInt(); int size=0;
		int k = c.nextInt();
		float a[] = new float[n+1];
		for(int i=1;i<=n;i++) {
			a[i] = c.nextFloat();
			a[i] += a[i-1];
		}
		float maximum=0;
		for(int i=k;i<=n;i++) {
			for(int j=1;j<=n-i+1;j++) {
				float avg = a[j+i-1]-a[j-1];
				avg = avg/(float)i;
				maximum = Math.max(maximum, avg);
			}
		}
		c.close();
		System.out.println(maximum);

	}

}


import java.util.Arrays;
import java.util.Scanner;

public class cfq3jul {

	public static void main(String[] args) {
		Scanner c = new Scanner(System.in);
		int n = c.nextInt(); int size=0;
		int k = c.nextInt();
		double a[] = new double[n+1];
		for(int i=1;i<=n;i++) {
			a[i] = c.nextDouble();
			a[i] += a[i-1];
		}
		double maximum=0;
		for(int i=k;i<=n;i++) {
			for(int j=1;j<=n-i+1;j++) {
				double avg = a[j+i-1]-a[j-1];
				avg = avg/(double)i;
				maximum = Math.max(maximum, avg);
			}
		}
		c.close();
		System.out.println(maximum);

	}

}


import java.util.Arrays;
import java.util.Scanner;

public class cfq3jul {

	static float intensity(int[] arr,  int start, int end) {
		float sum =0;
		for(int i=start;i<=end;i++) { sum += arr[i];}
		float avg = sum/(end-start+1);
		return avg;
	}

	public static void main(String[] args) {
		Scanner c = new Scanner(System.in);
		int n = c.nextInt(); int size=0;
		int k = c.nextInt();
		int a[] = new int[n];
		for(int i=0;i<n;i++) {
			a[i] = c.nextInt();
		}
		for(int i=k;i<=n;i++) {
			size += n-k+1;
		}
		float heat[] = new float[size]; int s=0;
		for(int i=k;i<=n;i++) {
			for(int j=0;j<n-i+1;j++) {
				heat[s] = intensity(a,j,j+i-1);
				//System.out.println(heat[s]);
				s++;
			}
		}

		Arrays.sort(heat);
		float maximum = heat[heat.length-1];
		System.out.println(maximum);

	}

}


import java.util.Arrays;
import java.util.Scanner;

public class cfq3jul {

	static float intensity(int[] arr,  int start, int end) {
		float sum =0;
		for(int i=start;i<=end;i++) { sum += arr[i];}
		float avg = sum/(end-start+1);
		return avg;
	}

	public static void main(String[] args) {
		Scanner c = new Scanner(System.in);
		int n = c.nextInt(); int size=0;
		int k = c.nextInt();
		int a[] = new int[n];
		for(int i=0;i<n;i++) {
			a[i] = c.nextInt();
		}
		for(int i=k;i<=n;i++) {
			size += n-k+1;
		}
		float heat[] = new float[size]; int s=0;
		for(int i=k;i<=n;i++) {
			for(int j=0;j<n-k+1;j++) {
				heat[s] = intensity(a,j,j+k-1);
				//System.out.println(heat[s]);
				s++;
			}
		}

		Arrays.sort(heat);
		float maximum = heat[heat.length-1];
		System.out.println(maximum);

	}

}


import java.io.*;
import java.util.*;

public class Main {
	public static void main(String args[])throws IOException
	{
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		String s=br.readLine();
		StringTokenizer s1=new StringTokenizer(s," ");
		int N=Integer.parseInt(s1.nextToken());
		int K=Integer.parseInt(s1.nextToken());
		int a[]=new int[N];
		String ss=br.readLine();
		StringTokenizer ss1=new StringTokenizer(ss," ");
		double b[]=new double[N];
		for(int i=0;i<N;i++)
		{
			a[i]=Integer.parseInt(ss1.nextToken());
			if(i==0)
				b[i]=a[i];
			else
				b[i]=b[i-1]+a[i];
		}
		double max=0;
		for(int i=K;i<=N;i++)
		{
			for(int j=i-1;j<N;j++)
			{
				double avg;
				if(j-i==-1)
				{
				avg= b[j]/i;
				}
				else
				{
					avg= (b[j]-b[j-i])/i;
				}
				if(avg >max)
					max= avg;
			}
		}
		System.out.println(max);

	}
}


import java.io.*;
import java.util.*;

public class Main {
	public static void main(String args[])throws IOException
	{
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		String s=br.readLine();
		StringTokenizer s1=new StringTokenizer(s," ");
		int N=Integer.parseInt(s1.nextToken());
		int K=Integer.parseInt(s1.nextToken());
		int a[]=new int[N];
		String ss=br.readLine();
		StringTokenizer ss1=new StringTokenizer(ss," ");
		double b[]=new double[N];
		for(int i=0;i<N;i++)
		{
			a[i]=Integer.parseInt(ss1.nextToken());
			if(i==0)
				b[i]=a[i];
			else
				b[i]=b[i-1]+a[i];
		}
		double max=0;
		for(int i=K;i<=N;i++)
		{
			for(int j=K-1;j<N;j++)
			{
				double avg;
				if(j-K==-1)
				{
				avg= b[j]/K;
				}
				else
				{
					avg= (b[j]-b[j-K])/K;
				}
				if(avg >max)
					max= avg;
			}
		}
		System.out.println(max);

	}
}


import java.io.*;
import java.util.*;

public class Main {
	public static void main(String args[])throws IOException
	{
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		String s=br.readLine();
		StringTokenizer s1=new StringTokenizer(s," ");
		int N=Integer.parseInt(s1.nextToken());
		int K=Integer.parseInt(s1.nextToken());
		int a[]=new int[N];
		String ss=br.readLine();
		StringTokenizer ss1=new StringTokenizer(ss," ");
		double b[]=new double[N];
		for(int i=0;i<N;i++)
		{
			a[i]=Integer.parseInt(ss1.nextToken());
			if(i==0)
				b[i]=a[i];
			else
				b[i]=b[i-1]+a[i];
		}
		double max=0;
		for(int i=K;i<=N;i++)
		{
			for(int j=K-1;j<N;j++)
			{
				double avg;
				if(j-K==-1)
				{
				avg= b[j]/K;
				}
				else
				{
					avg= (b[j]-b[j-K])/K;
				}
				if(avg >max)
					max= avg;
			}
		}
		System.out.println(max+"00000000");

	}
}


import java.io.*;
import java.util.*;

public class Main {
	public static void main(String args[])throws IOException
	{
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		String s=br.readLine();
		StringTokenizer s1=new StringTokenizer(s," ");
		int N=Integer.parseInt(s1.nextToken());
		int K=Integer.parseInt(s1.nextToken());
		int a[]=new int[N];
		String ss=br.readLine();
		StringTokenizer ss1=new StringTokenizer(ss," ");
		double b[]=new double[N];
		for(int i=0;i<N;i++)
		{
			a[i]=Integer.parseInt(ss1.nextToken());
			if(i==0)
				b[i]=a[i];
			else
				b[i]=b[i-1]+a[i];
		}
		double max=0;
		for(int i=K;i<N;i++)
		{
			for(int j=K-1;j<N;j++)
			{
				double avg;
				if(j-K==-1)
				{
				avg= b[j]/K;
				}
				else
				{
					avg= (b[j]-b[j-i])/K;
				}
				if(avg >max)
					max= avg;
			}
		}
		System.out.println(max);

	}
}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

//import avl.avl.Node;

import java.util.ArrayList;

//import Stack.Node;

//import him.hima.Node;

//import BinaryTree.Node;

import java.lang.Math;

//import hwLab6.hwlab6.Node;

public class June_Bonus3 {

	public static double[] MergeSort(double[] arr) {
		int length= arr.length;
		//System.out.println("length"+length);
		if (length<2) {
			//System.out.println("Himanshu");
			return arr;
		}
		else {
			double[] arr_left= new double[length/2];
			double[] arr_right= new double[length-length/2];
			for(int i=0; i<length/2; i++) {
					//System.out.println("Hello-"+ arr[i]);
					arr_left[i]=arr[i];

			}
			for(int j=0; j<length-length/2;j++) {
				//System.out.println("Need-"+ (int)(j+length/2));
				//System.out.println("Bye-"+ arr[(int)(j+length/2)]);
				arr_right[j]=arr[(int)(j+length/2)];
			}
			MergeSort(arr_left);
			//System.out.println("bansal");
			MergeSort(arr_right);
			//System.out.println("dogra");
			double[] hello=Merge(arr_left,arr_right,arr);
			//System.out.println("uabsuifb-"+arr[0]);
			//System.out.println("uabsuifb-"+arr[1]);
			//System.out.println("uabsuifb-"+arr[2]);

			return hello;
		}

	}

	public static double[] Merge(double[] arr_left,double[] arr_right,double[] arr) {
		int length1= arr_left.length;
		int length2= arr_right.length;
		//System.out.println("length1-"+length1);
		//System.out.println("length2-"+length2);
		int i=0;
		int j=0;
		int k=0;
		//System.out.println("one"+arr_left[0]);
		//System.out.println("two"+arr_right[0]);
		while(i<length1 && j<length2) {
			if (arr_left[i]<arr_right[j]) {
				//System.out.println("Bad");
				arr[k]=arr_left[i];
				i=i+1;
				k=k+1;
			}
			else {
				//System.out.println("Good");
				arr[k]=arr_right[j];
				j=j+1;
				k=k+1;
			}
		}
		while (i < length1) {
			//System.out.println("TOYYYYYYYYYYYY");
			//System.out.println(arr_left[i]);
			 arr[k]=arr_left[i];
			i=i+1;
			k=k+1;
			//System.out.println("i-"+i);
		}
		while(j < length2) {
			//System.out.println("wretrytuyiubcihbfi");
			//System.out.println("j"+j);
			 arr[k]=arr_right[j];
			j=j+1;
			k=k+1;
		}
		//System.out.println("hello"+arr[0]);
		//System.out.println("bye"+arr[1]);
		//System.out.println("AARUSH- "+ arr[0]);
		//System.out.println("Talwar- "+ arr[1]);
	return arr;
	}

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		Reader.init(System.in);
		int[] arr= new int[2];
		for(int i=0;i<2;i++) {
			arr[i]= Reader.nextInt();
		}
		int[] arr_main= new int[arr[0]];
		for(int j=0;j<arr[0];j++) {
			arr_main[j]=Reader.nextInt();
		}

		double[] arr_avg= new double[arr[0]-arr[1]+1];
		double[] arr_sum= new double[arr[0]-arr[1]+1];
		for(int a=0;a<arr[0]-arr[1]+1;a++) {
			double sum=0;
			for(int q=a;q<a+arr[1];q++) {
				sum= sum+arr_main[q];
			}
			arr_sum[a]=sum;
			arr_avg[a]=sum/arr[1];
		}

		//System.out.println(arr_avg[0]);
		//System.out.println(arr_avg[1]);
		//System.out.println(arr_avg[2]);

		//System.out.println(arr_sum[0]);
		//System.out.println(arr_sum[1]);

		//double[] arr_new= arr_avg;
		//arr_new = MergeSort(arr_new);

		//double max= arr_new[arr_new.length-1];

		if(arr[1] != 1) {
		double avg=0;
		double avg_main=0;
		for(double k=arr[1]+1;k<arr[0]+1;k++) {
			double new_sum= 0;
			int g= arr_sum.length;

			for(int t=0;t<g-1;t++) {
				arr_sum[t]= arr_sum[t]+ arr_main[(int) (t+k-1)];
				avg= arr_sum[t]/k;

				//System.out.println("avg="+avg);
				if(avg>arr_avg[t]) {
					//System.out.println("hello");
					arr_avg[t]=avg;
				}
			}
			g--;
		}

		}

		//System.out.println("hello"+arr_avg[0]);
		//System.out.println("hello"+arr_avg[1]);

		double max=0;
		for(int h=0;h<arr_avg.length;h++) {
			if(arr_avg[h]>max) {
				max= arr_avg[h];
			}
		}
		System.out.println(max);
	}

}

class Reader {
static BufferedReader reader;
static StringTokenizer tokenizer;

/** call this method to initialize reader for InputStream */
static void init(InputStream input) {
    reader = new BufferedReader(
                 new InputStreamReader(input) );
    tokenizer = new StringTokenizer("");
}

/** get next word */
static String next() throws IOException {
    while ( ! tokenizer.hasMoreTokens() ) {
        //TODO add check for eof if necessary
        tokenizer = new StringTokenizer(
               reader.readLine() );
    }
    return tokenizer.nextToken();
}

static int nextInt() throws IOException {
    return Integer.parseInt( next() );
}

static double nextDouble() throws IOException {
    return Double.parseDouble( next() );
}

static long nextLong() throws IOException {
    return Long.parseLong( next() );
}
}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

//import avl.avl.Node;

import java.util.ArrayList;

//import Stack.Node;

//import him.hima.Node;

//import BinaryTree.Node;

import java.lang.Math;

//import hwLab6.hwlab6.Node;

public class June_Bonus3 {

	public static double[] MergeSort(double[] arr) {
		int length= arr.length;
		//System.out.println("length"+length);
		if (length<2) {
			//System.out.println("Himanshu");
			return arr;
		}
		else {
			double[] arr_left= new double[length/2];
			double[] arr_right= new double[length-length/2];
			for(int i=0; i<length/2; i++) {
					//System.out.println("Hello-"+ arr[i]);
					arr_left[i]=arr[i];

			}
			for(int j=0; j<length-length/2;j++) {
				//System.out.println("Need-"+ (int)(j+length/2));
				//System.out.println("Bye-"+ arr[(int)(j+length/2)]);
				arr_right[j]=arr[(int)(j+length/2)];
			}
			MergeSort(arr_left);
			//System.out.println("bansal");
			MergeSort(arr_right);
			//System.out.println("dogra");
			double[] hello=Merge(arr_left,arr_right,arr);
			//System.out.println("uabsuifb-"+arr[0]);
			//System.out.println("uabsuifb-"+arr[1]);
			//System.out.println("uabsuifb-"+arr[2]);

			return hello;
		}

	}

	public static double[] Merge(double[] arr_left,double[] arr_right,double[] arr) {
		int length1= arr_left.length;
		int length2= arr_right.length;
		//System.out.println("length1-"+length1);
		//System.out.println("length2-"+length2);
		int i=0;
		int j=0;
		int k=0;
		//System.out.println("one"+arr_left[0]);
		//System.out.println("two"+arr_right[0]);
		while(i<length1 && j<length2) {
			if (arr_left[i]<arr_right[j]) {
				//System.out.println("Bad");
				arr[k]=arr_left[i];
				i=i+1;
				k=k+1;
			}
			else {
				//System.out.println("Good");
				arr[k]=arr_right[j];
				j=j+1;
				k=k+1;
			}
		}
		while (i < length1) {
			//System.out.println("TOYYYYYYYYYYYY");
			//System.out.println(arr_left[i]);
			 arr[k]=arr_left[i];
			i=i+1;
			k=k+1;
			//System.out.println("i-"+i);
		}
		while(j < length2) {
			//System.out.println("wretrytuyiubcihbfi");
			//System.out.println("j"+j);
			 arr[k]=arr_right[j];
			j=j+1;
			k=k+1;
		}
		//System.out.println("hello"+arr[0]);
		//System.out.println("bye"+arr[1]);
		//System.out.println("AARUSH- "+ arr[0]);
		//System.out.println("Talwar- "+ arr[1]);
	return arr;
	}

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		Reader.init(System.in);
		int[] arr= new int[2];
		for(int i=0;i<2;i++) {
			arr[i]= Reader.nextInt();
		}
		int[] arr_main= new int[arr[0]];
		for(int j=0;j<arr[0];j++) {
			arr_main[j]=Reader.nextInt();
		}

		double[] arr_avg= new double[arr[0]-arr[1]+1];
		double[] arr_sum= new double[arr[0]-arr[1]+1];
		for(int a=0;a<arr[0]-arr[1]+1;a++) {
			double sum=0;
			for(int q=a;q<a+arr[1];q++) {
				sum= sum+arr_main[q];
			}
			arr_sum[a]=sum;
			arr_avg[a]=sum/arr[1];
		}

		//System.out.println(arr_avg[0]);
		//System.out.println(arr_avg[1]);
		//System.out.println(arr_avg[2]);

		//System.out.println(arr_sum[0]);
		//System.out.println(arr_sum[1]);

		//double[] arr_new= arr_avg;
		//arr_new = MergeSort(arr_new);

		//double max= arr_new[arr_new.length-1];

		if(arr[1] != 1) {
		double avg=0;
		double avg_main=0;
		int g= arr_sum.length;
		for(double k=arr[1]+1;k<arr[0]+1;k++) {
			double new_sum= 0;

			for(int t=0;t<g-1;t++) {
				//System.out.println("t="+t);
				//System.out.println("g="+g);
				arr_sum[t]= arr_sum[t]+ arr_main[(int) (t+k-1)];
				avg= arr_sum[t]/k;

			//	System.out.println("avg="+avg);
				if(avg>arr_avg[t]) {
					//System.out.println("hello");
					arr_avg[t]=avg;
				}
			}
			g--;
		}

		}

		//System.out.println("hello"+arr_avg[0]);
		//System.out.println("hello"+arr_avg[1]);

		double max=0;
		for(int h=0;h<arr_avg.length;h++) {
			if(arr_avg[h]>max) {
				max= arr_avg[h];
			}
		}
		System.out.println(max);
	}

}

class Reader {
static BufferedReader reader;
static StringTokenizer tokenizer;

/** call this method to initialize reader for InputStream */
static void init(InputStream input) {
    reader = new BufferedReader(
                 new InputStreamReader(input) );
    tokenizer = new StringTokenizer("");
}

/** get next word */
static String next() throws IOException {
    while ( ! tokenizer.hasMoreTokens() ) {
        //TODO add check for eof if necessary
        tokenizer = new StringTokenizer(
               reader.readLine() );
    }
    return tokenizer.nextToken();
}

static int nextInt() throws IOException {
    return Integer.parseInt( next() );
}

static double nextDouble() throws IOException {
    return Double.parseDouble( next() );
}

static long nextLong() throws IOException {
    return Long.parseLong( next() );
}
}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

//import avl.avl.Node;

import java.util.ArrayList;

//import Stack.Node;

//import him.hima.Node;

//import BinaryTree.Node;

import java.lang.Math;

//import hwLab6.hwlab6.Node;

public class June_Bonus3 {

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		Reader.init(System.in);
		int[] arr= new int[2];
		for(int i=0;i<2;i++) {
			arr[i]= Reader.nextInt();
		}
		int[] arr_main= new int[arr[0]];
		for(int j=0;j<arr[0];j++) {
			arr_main[j]=Reader.nextInt();
		}
		double avg=0;
		double avg_main=0;
		for(double k=arr[1];k<arr[0];k++) {
			for(int t=0;t<arr[0]-k;t++) {
				double sum=0;
				for(int w=t;w<t+k;w++) {
					sum= sum+arr_main[w];
				}

				//System.out.println("sum="+ sum);
				//System.out.println("k"+k);
				avg= sum/k;
				//System.out.println("avg"+avg);
				if(avg_main<avg) {
					avg_main= avg;
				}
			}
		}
		if(avg_main<avg) {
			avg_main= avg;
		}

		System.out.println(avg_main);
	}

}

class Reader {
static BufferedReader reader;
static StringTokenizer tokenizer;

/** call this method to initialize reader for InputStream */
static void init(InputStream input) {
    reader = new BufferedReader(
                 new InputStreamReader(input) );
    tokenizer = new StringTokenizer("");
}

/** get next word */
static String next() throws IOException {
    while ( ! tokenizer.hasMoreTokens() ) {
        //TODO add check for eof if necessary
        tokenizer = new StringTokenizer(
               reader.readLine() );
    }
    return tokenizer.nextToken();
}

static int nextInt() throws IOException {
    return Integer.parseInt( next() );
}

static double nextDouble() throws IOException {
    return Double.parseDouble( next() );
}

static long nextLong() throws IOException {
    return Long.parseLong( next() );
}
}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

//import avl.avl.Node;

import java.util.ArrayList;

//import Stack.Node;

//import him.hima.Node;

//import BinaryTree.Node;

import java.lang.Math;

//import hwLab6.hwlab6.Node;

public class June_Bonus3 {

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		Reader.init(System.in);
		int[] arr= new int[2];
		for(int i=0;i<2;i++) {
			arr[i]= Reader.nextInt();
		}
		int[] arr_main= new int[arr[0]];
		for(int j=0;j<arr[0];j++) {
			arr_main[j]=Reader.nextInt();
		}
		double avg=0;
		double avg_main=0;
		for(double k=arr[1];k<arr[0]+1;k++) {
			for(int t=0;t<arr[0]-k+1;t++) {
				double sum=0;
				for(int w=t;w<t+k;w++) {
					sum= sum+arr_main[w];
				}

				//System.out.println("sum="+ sum);
				//System.out.println("k"+k);
				avg= sum/k;
				//System.out.println("avg"+avg);
				if(avg_main<avg) {
					avg_main= avg;
				}
			}
		}

		System.out.println(avg_main);
	}

}

class Reader {
static BufferedReader reader;
static StringTokenizer tokenizer;

/** call this method to initialize reader for InputStream */
static void init(InputStream input) {
    reader = new BufferedReader(
                 new InputStreamReader(input) );
    tokenizer = new StringTokenizer("");
}

/** get next word */
static String next() throws IOException {
    while ( ! tokenizer.hasMoreTokens() ) {
        //TODO add check for eof if necessary
        tokenizer = new StringTokenizer(
               reader.readLine() );
    }
    return tokenizer.nextToken();
}

static int nextInt() throws IOException {
    return Integer.parseInt( next() );
}

static double nextDouble() throws IOException {
    return Double.parseDouble( next() );
}

static long nextLong() throws IOException {
    return Long.parseLong( next() );
}
}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

//import avl.avl.Node;

import java.util.ArrayList;

//import Stack.Node;

//import him.hima.Node;

//import BinaryTree.Node;

import java.lang.Math;

//import hwLab6.hwlab6.Node;

public class June_Bonus3 {

	public static double[] MergeSort(double[] arr) {
		int length= arr.length;
		//System.out.println("length"+length);
		if (length<2) {
			//System.out.println("Himanshu");
			return arr;
		}
		else {
			double[] arr_left= new double[length/2];
			double[] arr_right= new double[length-length/2];
			for(int i=0; i<length/2; i++) {
					//System.out.println("Hello-"+ arr[i]);
					arr_left[i]=arr[i];

			}
			for(int j=0; j<length-length/2;j++) {
				//System.out.println("Need-"+ (int)(j+length/2));
				//System.out.println("Bye-"+ arr[(int)(j+length/2)]);
				arr_right[j]=arr[(int)(j+length/2)];
			}
			MergeSort(arr_left);
			//System.out.println("bansal");
			MergeSort(arr_right);
			//System.out.println("dogra");
			double[] hello=Merge(arr_left,arr_right,arr);
			//System.out.println("uabsuifb-"+arr[0]);
			//System.out.println("uabsuifb-"+arr[1]);
			//System.out.println("uabsuifb-"+arr[2]);

			return hello;
		}

	}

	public static double[] Merge(double[] arr_left,double[] arr_right,double[] arr) {
		int length1= arr_left.length;
		int length2= arr_right.length;
		//System.out.println("length1-"+length1);
		//System.out.println("length2-"+length2);
		int i=0;
		int j=0;
		int k=0;
		//System.out.println("one"+arr_left[0]);
		//System.out.println("two"+arr_right[0]);
		while(i<length1 && j<length2) {
			if (arr_left[i]<arr_right[j]) {
				//System.out.println("Bad");
				arr[k]=arr_left[i];
				i=i+1;
				k=k+1;
			}
			else {
				//System.out.println("Good");
				arr[k]=arr_right[j];
				j=j+1;
				k=k+1;
			}
		}
		while (i < length1) {
			//System.out.println("TOYYYYYYYYYYYY");
			//System.out.println(arr_left[i]);
			 arr[k]=arr_left[i];
			i=i+1;
			k=k+1;
			//System.out.println("i-"+i);
		}
		while(j < length2) {
			//System.out.println("wretrytuyiubcihbfi");
			//System.out.println("j"+j);
			 arr[k]=arr_right[j];
			j=j+1;
			k=k+1;
		}
		//System.out.println("hello"+arr[0]);
		//System.out.println("bye"+arr[1]);
		//System.out.println("AARUSH- "+ arr[0]);
		//System.out.println("Talwar- "+ arr[1]);
	return arr;
	}

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		Reader.init(System.in);
		int[] arr= new int[2];
		for(int i=0;i<2;i++) {
			arr[i]= Reader.nextInt();
		}
		int[] arr_main= new int[arr[0]];
		for(int j=0;j<arr[0];j++) {
			arr_main[j]=Reader.nextInt();
		}

		double[] arr_avg= new double[arr[0]-arr[1]+1];
		double[] arr_sum= new double[arr[0]-arr[1]+1];
		for(int a=0;a<arr[0]-arr[1]+1;a++) {
			double sum=0;
			for(int q=a;q<a+arr[1];q++) {
				sum= sum+arr_main[q];
			}
			arr_sum[a]=sum;
			arr_avg[a]=sum/arr[1];
		}

		//System.out.println(arr_avg[0]);
		//System.out.println(arr_avg[1]);
		//System.out.println(arr_avg[2]);

		//System.out.println(arr_sum[0]);
		//System.out.println(arr_sum[1]);

		//double[] arr_new= arr_avg;
		//arr_new = MergeSort(arr_new);

		//double max= arr_new[arr_new.length-1];

		double avg=0;
		double avg_main=0;
		for(double k=arr[1]+1;k<arr[0]+1;k++) {
			double new_sum= 0;
			int g= arr_sum.length;

			for(int t=0;t<g-1;t++) {
				arr_sum[t]= arr_sum[t]+ arr_main[(int) (t+k-1)];
				avg= arr_sum[t]/k;

				//System.out.println("avg="+avg);
				if(avg>arr_avg[t]) {
					//System.out.println("hello");
					arr_avg[t]=avg;
				}
			}
			g--;

		}

		//System.out.println("hello"+arr_avg[0]);
		//System.out.println("hello"+arr_avg[1]);

		double max=0;
		for(int h=0;h<arr_avg.length;h++) {
			if(arr_avg[h]>max) {
				max= arr_avg[h];
			}
		}
		System.out.println(max);
	}

}

class Reader {
static BufferedReader reader;
static StringTokenizer tokenizer;

/** call this method to initialize reader for InputStream */
static void init(InputStream input) {
    reader = new BufferedReader(
                 new InputStreamReader(input) );
    tokenizer = new StringTokenizer("");
}

/** get next word */
static String next() throws IOException {
    while ( ! tokenizer.hasMoreTokens() ) {
        //TODO add check for eof if necessary
        tokenizer = new StringTokenizer(
               reader.readLine() );
    }
    return tokenizer.nextToken();
}

static int nextInt() throws IOException {
    return Integer.parseInt( next() );
}

static double nextDouble() throws IOException {
    return Double.parseDouble( next() );
}

static long nextLong() throws IOException {
    return Long.parseLong( next() );
}
}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

//import avl.avl.Node;

import java.util.ArrayList;

//import Stack.Node;

//import him.hima.Node;

//import BinaryTree.Node;

import java.lang.Math;

//import hwLab6.hwlab6.Node;

public class June_Bonus3 {

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		Reader.init(System.in);
		int[] arr= new int[2];
		for(int i=0;i<2;i++) {
			arr[i]= Reader.nextInt();
		}
		int[] arr_main= new int[arr[0]];
		for(int j=0;j<arr[0];j++) {
			arr_main[j]=Reader.nextInt();
		}
		double avg=0;
		double avg_main=0;
		for(double k=arr[1];k<arr[0];k++) {
			for(int t=0;t<arr[0];t++) {
				double sum=0;
				for(int w=0;w<k;w++) {
					sum= sum+arr_main[w];
				}

				//System.out.println("sum="+ sum);
				//System.out.println("k"+k);
				avg= sum/k;
				//System.out.println("avg"+avg);
				if(avg_main<avg) {
					avg_main= avg;
				}
			}
		}
		if(avg_main<avg) {
			avg_main= avg;
		}

		System.out.println(avg_main);
	}

}

class Reader {
static BufferedReader reader;
static StringTokenizer tokenizer;

/** call this method to initialize reader for InputStream */
static void init(InputStream input) {
    reader = new BufferedReader(
                 new InputStreamReader(input) );
    tokenizer = new StringTokenizer("");
}

/** get next word */
static String next() throws IOException {
    while ( ! tokenizer.hasMoreTokens() ) {
        //TODO add check for eof if necessary
        tokenizer = new StringTokenizer(
               reader.readLine() );
    }
    return tokenizer.nextToken();
}

static int nextInt() throws IOException {
    return Integer.parseInt( next() );
}

static double nextDouble() throws IOException {
    return Double.parseDouble( next() );
}

static long nextLong() throws IOException {
    return Long.parseLong( next() );
}
}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

//import avl.avl.Node;

import java.util.ArrayList;

//import Stack.Node;

//import him.hima.Node;

//import BinaryTree.Node;

import java.lang.Math;

//import hwLab6.hwlab6.Node;

public class June_Bonus3 {

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		Reader.init(System.in);
		int[] arr= new int[2];
		for(int i=0;i<2;i++) {
			arr[i]= Reader.nextInt();
		}
		int[] arr_main= new int[arr[0]];
		for(int j=0;j<arr[0];j++) {
			arr_main[j]=Reader.nextInt();
		}
		double avg=0;
		double avg_main=0;
		for(double k=arr[1];k<arr[0];k++) {
			for(int t=0;t<arr[0]-k+1;t++) {
				double sum=0;
				for(int w=t;w<t+k;w++) {
					sum= sum+arr_main[w];
				}

				//System.out.println("sum="+ sum);
				//System.out.println("k"+k);
				avg= sum/k;
				//System.out.println("avg"+avg);
				if(avg_main<avg) {
					avg_main= avg;
				}
			}
		}

		System.out.println(avg_main);
	}

}

class Reader {
static BufferedReader reader;
static StringTokenizer tokenizer;

/** call this method to initialize reader for InputStream */
static void init(InputStream input) {
    reader = new BufferedReader(
                 new InputStreamReader(input) );
    tokenizer = new StringTokenizer("");
}

/** get next word */
static String next() throws IOException {
    while ( ! tokenizer.hasMoreTokens() ) {
        //TODO add check for eof if necessary
        tokenizer = new StringTokenizer(
               reader.readLine() );
    }
    return tokenizer.nextToken();
}

static int nextInt() throws IOException {
    return Integer.parseInt( next() );
}

static double nextDouble() throws IOException {
    return Double.parseDouble( next() );
}

static long nextLong() throws IOException {
    return Long.parseLong( next() );
}
}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import java.util.*;
public class A_GENERAL {

	static long c = 0;
	private static int[] parent;
	public static void main(String[] args) {

		MyScanner sc = new MyScanner();

		int n = sc.nextInt();
		int k = sc.nextInt();
		double[] a = new double[n];
		for(int i = 0; i < n; i++)
			a[i] = sc.nextDouble();
		double max = Double.MIN_VALUE;
		for(int i = k; i <= n; i++) {
			boolean flag = false;
			for(int j = 0; j < n-i+1; j++) {
				double sum = 0;
				for(int p = j; p < j+i; p++) {
					sum += a[p];
				}
				sum = sum/i;
//				max = Math.max(max, sum);
//				System.out.println("sum = " + sum);
				if(max < sum) {
					max = sum;
//					System.out.println("max = " + max);
					flag = true;
				}
			}
			if(!flag) break;
		}
		System.out.println(max);
	}

	static class MyScanner {
		BufferedReader br;
		StringTokenizer st;
		public MyScanner() {
			br = new BufferedReader(new InputStreamReader(System.in));
		}
		String next() {while (st == null || !st.hasMoreElements()) {
			try {st = new StringTokenizer(br.readLine());}
			catch (IOException e) {e.printStackTrace();}}
		return st.nextToken();}
		int nextInt() {return Integer.parseInt(next());}
		long nextLong() {return Long.parseLong(next());}
		double nextDouble() {return Double.parseDouble(next());}
		String nextLine(){String str = "";
		try {str = br.readLine();}
		catch (IOException e) {e.printStackTrace();}
		return str;}
	}

}


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import java.util.*;
public class A_GENERAL {

	static long c = 0;
	private static int[] parent;
	public static void main(String[] args) {

		MyScanner sc = new MyScanner();

		int n = sc.nextInt();
		int k = sc.nextInt();
		double[] a = new double[n];
		for(int i = 0; i < n; i++)
			a[i] = sc.nextDouble();
		double max = Double.MIN_VALUE;
		for(int i = k; i <= n; i++) {
			for(int j = 0; j < n-i+1; j++) {
				double sum = 0;
				for(int p = j; p < j+i; p++) {
					sum += a[p];
				}
				sum = sum/i;
				max = Math.max(max, sum);
			}
		}
		System.out.println(max);
	}

	static class MyScanner {
		BufferedReader br;
		StringTokenizer st;
		public MyScanner() {
			br = new BufferedReader(new InputStreamReader(System.in));
		}
		String next() {while (st == null || !st.hasMoreElements()) {
			try {st = new StringTokenizer(br.readLine());}
			catch (IOException e) {e.printStackTrace();}}
		return st.nextToken();}
		int nextInt() {return Integer.parseInt(next());}
		long nextLong() {return Long.parseLong(next());}
		double nextDouble() {return Double.parseDouble(next());}
		String nextLine(){String str = "";
		try {str = br.readLine();}
		catch (IOException e) {e.printStackTrace();}
		return str;}
	}

}