rt,这份代码在本地可以过样例 1,但是交到 CF 上样例 1 会输出 1
#include <bits/stdc++.h>
using namespace std;
inline int read(){
int x=0;bool f=1;char c=getchar();
while(c>'9'||c<'0'){if(c=='-')f=0;c=getchar();}
while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+(c^48);c=getchar();}
return f?x:-x;
}
int n,m,w,l=1,r=1000114514,a[114514],d[114514];
inline bool check(int x){
int now=0,usd;
for(int i=1;i<=n;i++) d[i]=a[i]-a[i-1];
for(int i=1;i<=n;i++){
now+=d[i];
if(now<x) usd+=x-now,d[min(i+w,n+1)]-=(x-now),now=x;
if(usd>m) return 0;
}
return 1;
}
int main(){
n=read(),m=read(),w=read();
for(int i=1;i<=n;i++) a[i]=read();
while(l<r-1){
int mid=l+r>>1;
if(check(mid)) l=mid;
else r=mid;
}
printf("%d\n",l);
return 0;
}