线段树
#include <iostream>
#include <algorithm>
#include <iomanip>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
const int MAXN = 2*1e5+10;
int n,k;
double sum[MAXN<<2];
void build(int l, int r, int rt)
{
if(l == r)
{
cin >> sum[rt];
return;
}
int m = (l+r) >> 1;
build(lson);
build(rson);
sum[rt] = sum[rt<<1]+sum[rt<<1|1];
}
double query(int L, int R, int l, int r, int rt)
{
if(L <= l && r <= R)
{
return sum[rt];
}
int m = (l+r) >> 1;
double ret = 0;
if(L <= m) ret += query(L,R,lson);
if(R > m) ret += query(L,R,rson);
return ret;
}
int main()
{
ios::sync_with_stdio(false);
cin >> n >> k;
build(1,n,1);
double sum = 0;
for(int i = 1; i <= n; ++i)
{
int j = i+k-1;
if(j > n) break;
sum += query(i,j,1,n,1);
}
cout << fixed << setprecision(6) << sum/(n-k+1) <<endl;
return 0;
}