UOJ Logo

NOI.AC

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#196944#2637. Wilczewosile1001090ms46660kbC++940b2023-11-04 08:20:162023-11-04 12:08:59

answer

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,d;
ll p,a[2000005],pre[2000005],sd[2000005];
int q[2000005],l,r;
ll read(){
	char c=getchar();
	ll tmp=0;
	while(c<'0' || c>'9')c=getchar();
	while(c>='0' && c<='9'){
		tmp=(tmp<<3)+(tmp<<1)+(c-'0');
		c=getchar();
	}
	return tmp;
}
int main(){
	n=read();p=read();d=read();
	for(int i=1;i<=n;i++)a[i]=read();
	for(int i=1;i<=n;i++)pre[i]=pre[i-1]+a[i];
	for(int i=d;i<=n;i++)sd[i]=pre[i]-pre[i-d];
	pre[n+1]=1e18;
	int L=1,R=d;
	l=r=1,q[1]=d;
	while(pre[R]-pre[L-1]-sd[q[l]]<=p){
		R++;
		while(r>=l && sd[q[r]]<=sd[R])r--;
		q[++r]=R;
	}
	int ans=R-L;
	for(int i=1;i<=n-d;i++){
		L++;
		if(q[l]<i+d)l++;
		while(pre[R]-pre[L-1]-sd[q[l]]<=p){
			R++;
			while(r>=l && sd[q[r]]<=sd[R])r--;
			q[++r]=R;
		}
//		printf("%d %d\n",L,R);
		ans=max(ans,R-L);
	}
	printf("%d",ans);
	return 0;
}
/*
10 2 3
5 5 5 5 5 1 1 1 1 1
*/

Details

小提示:点击横条可展开更详细的信息

Test #1:

score: 10
Accepted
time: 0ms
memory: 1184kb

input:

1000 140500 31
635 1326 1342 1116 355 1397 813 590 550 533 626 875 1221 225 1112 196 1160 192 25 374...

output:

243

result:

ok single line: '243'

Test #2:

score: 10
Accepted
time: 0ms
memory: 1188kb

input:

1000 121200 20
351 27 24 621 239 639 415 21 541 120 499 1135 815 778 1026 995 267 1203 536 1004 1029...

output:

245

result:

ok single line: '245'

Test #3:

score: 10
Accepted
time: 183ms
memory: 46660kb

input:

2000000 22780000 177658
2124 1846 653 233 898 205 1611 695 439 1310 19 1365 2046 196 554 107 28 935 ...

output:

197970

result:

ok single line: '197970'

Test #4:

score: 10
Accepted
time: 158ms
memory: 40736kb

input:

2000000 90850000 934907
8508 586 2151 7172 1953 7096 6147 8127 5666 7500 8586 3579 5135 1501 6375 27...

output:

955225

result:

ok single line: '955225'

Test #5:

score: 10
Accepted
time: 124ms
memory: 44520kb

input:

2000000 26990000 451405
2482 935 717 2596 1413 503 799 1774 777 1928 816 115 2603 2345 558 713 752 2...

output:

471701

result:

ok single line: '471701'

Test #6:

score: 10
Accepted
time: 106ms
memory: 38600kb

input:

2000000 95060000 1208654
5701 1750 9395 2030 6950 1481 3944 5487 4118 2144 1708 185 3546 4588 5243 6...

output:

1228983

result:

ok single line: '1228983'

Test #7:

score: 10
Accepted
time: 138ms
memory: 42376kb

input:

2000000 31200000 725152
355 2582 522 690 1698 1273 581 937 147 1579 2078 3079 2620 1940 2414 997 197...

output:

745483

result:

ok single line: '745483'

Test #8:

score: 10
Accepted
time: 136ms
memory: 43288kb

input:

2000000 67340000 608003
5048 3593 1129 5525 3038 6144 880 2911 5708 3214 4966 4073 998 4101 530 6287...

output:

628339

result:

ok single line: '628339'

Test #9:

score: 10
Accepted
time: 134ms
memory: 37372kb

input:

2000000 35410000 1365252
3507 3099 2782 2614 1356 683 3102 1599 3287 1326 978 1291 380 3521 176 546 ...

output:

1385539

result:

ok single line: '1385539'

Test #10:

score: 10
Accepted
time: 111ms
memory: 41148kb

input:

2000000 71550000 881750
1732 5991 326 3423 6566 6197 5295 5489 3598 1793 3820 3149 4165 2146 3336 35...

output:

902039

result:

ok single line: '902039'