#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
#define ll long long
#define maxn 110000
ll q[maxn],save[maxn],sum[maxn];
int h,t,n,m;
double getk(int j,int k)
{
double tmp=double(sum[j]-sum[k])/(j-k);
return tmp;
}
inline int ReadInt()
{
char ch = getchar();
int data = 0;
while (ch < '0' || ch > '9')
{
ch = getchar();
}
do
{
data = data*10 + ch-'0';
ch = getchar();
}while (ch >= '0' && ch <= '9');
return data;
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
sum[0]=0;
for(int i=1;i<=n;i++)
{
save[i]=ReadInt();
sum[i]=sum[i-1]+save[i];
}
h=t=1;
double ans=0;
for(int i=m;i<=n;i++)
{
int now=i-m;
while(h<t&&getk(now,q[t-1])>=getk(now,q[t])) t--;
q[++t]=now;
while(h<t&&getk(i,q[h])<=getk(i,q[h+1])) h++;
ans=max(ans,double(sum[i]-sum[q[h]])/(i-q[h]));
}
printf("%.2lf\n",ans);
}
return 0;
}
hdu2993 优先队列
最新推荐文章于 2019-09-19 20:23:08 发布