总是超时,可以给一点改良意见吗
#include<bits/stdc++.h>
#include<math.h>
using namespace std;
const long long N=1e6;
long long n,m,l=1e6,r=-1;
long long a[N],s[N];
long long f(long long mid)
{
for(long long i=1;i<=n;i++)
s[i]=s[i-1]+(a[i]*10000-mid);
long long minn=1e6,maxn=-1e6;
for(long long i=m;i<=n;i++)
{
minn=min(minn,s[i-m]);
maxn=max(maxn,s[i]-minn);
}
return maxn>=0;
}
int main()
{
cin>>n>>m;
for(long long i=1;i<=n;i++)
{
cin>>a[i];
l=min(l,a[i]*10000);
r=max(r,a[i]*10000);
}
while(r-l>=1e-6)
{
long long mid=(l+r)/2;
if(f(mid)) l=l+1;
else r=mid-1;
}
cout<<l/10;
}