#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp> // Common file
#include <ext/pb_ds/tree_policy.hpp> // Including tree_order_statistics_node_update
#include <ext/pb_ds/detail/standard_policies.hpp>

using namespace std;
using namespace __gnu_pbds;

typedef tree<pair<int, int>, null_type, less<pair<int, int>>, rb_tree_tag,
		tree_order_statistics_node_update> ordered_set;

#define el				'\n'
#define sz(v)			((int)((v).size()))
#define all(v)          ((v).begin()),((v).end())
#define clr(v, d)		memset(v, d, sizeof(v))

double const EPS = 1e-8, PI = acos(-1);
const int N = 5000 + 9, M = 1e4 + 9, OO = (int) 1e8 + 1;
const long long MOD = 1e9 + 7, INF = 1e18 + 9;

typedef long long ll;

void OUTPUT() {
	cout << fixed << setprecision(12);
	ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
}

void INPUT() {
#ifndef ONLINE_JUDGE
	freopen("input.txt", "r", stdin);
//	freopen("output.txt", "w", stdout);
#endif
}

int n, k, x, arr[N], cum[N];
int main() {
	INPUT();
	OUTPUT();
	cin >> n >> k;
	for (int i = 1; i <= n; ++i) {
		cin >> arr[i];
	}
	double res = 0;

	for (int i = 1; i <= n; i++)
		cum[i] = arr[i] + cum[i - 1];

	double ans = 0;
	for (int i = 1; i <= n; i++) {
		for (int j = i + 1; j <= n; j++) {
			if (j - i + 1 >= k) {
				ans = max(ans, (cum[j] - cum[i - 1]) / double(j - i + 1));
			}
		}
	}
	cout << ans << el;

	return 0;

}
