二分法查询答案
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
double a[100005],b[100005],sum[100005];
int main(){
int n,L;
cin>>n>>L;
for(int i=1;i<=n;i++) scanf("%lf",&a[i]);
double eps=1e-5;
double l=-1e6,r=1e6;
while(r-l>eps){
double mid=(r+l)/2;
for(int i=1;i<=n;i++) b[i]=a[i]-mid;
for(int i=1;i<=n;i++) sum[i]=sum[i-1]+b[i];
double ans=-1e10,minval=1e10;
for(int i=L;i<=n;i++){
minval=min(minval,sum[i-L]);
ans=max(ans,sum[i]-minval);
}
if(ans>=0) l=mid; else r=mid;
}
cout<<int(r*1000)<<endl;
return 0;
}