#include<cstdio>
#include<cstring>
#include<iostream>
#define maxn 2000020
#define LL long long
using namespace std;
LL n,p,d,sum[maxn];
int q[maxn*2];
int main(){
scanf("%lld%lld%lld",&n,&p,&d);
for(int i=1;i<=n;i++)scanf("%lld",sum+i),sum[i]+=sum[i-1];
int l=1,r=0,j=0,ans=d;
for(int i=d;i<=n;i++){
while(l<=r&&sum[i]-sum[i-d]>sum[q[r]]-sum[q[r]-d])r--;
q[++r]=i;
while(q[l]-d<j)l++;
while(sum[i]-sum[j]-(sum[q[l]]-sum[q[l]-d])>p){
j++;if(q[l]-d<j)l++;
}
ans=max(ans,i-j);
}
printf("%d",ans);
return 0;
}
【BZOJ 4385】[POI2015]Wilcze doły 单调队列
最新推荐文章于 2018-11-21 23:01:00 发布