UOJ Logo

NOI.AC

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#215253#2639. 省钱wujiachen100167ms2800kbC++883b2024-11-27 20:27:062024-11-27 23:38:20

answer

#include<queue> 
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct pr{ int x,y; } x;
inline bool operator< (pr a,pr b){ return a.x>b.x; }
priority_queue<pr> q1,q2;
priority_queue<int,vector<int>,greater<int> > q;
int n,k,p[50010],c[50010],v[50010]; long long m;
int main(){
	scanf("%d%d%lld",&n,&k,&m);
	for(int i=n;i;--i) scanf("%d%d",p+i,c+i);
	for(int i=k;i;--i) q.push(0);
	for(int i=n;i;--i){
		 q1.push((pr){p[i],i});
		 q2.push((pr){c[i],i});
	}
	int ans=0;
	for(;m>0 && ans<n;++ans){
		for(;v[q1.top().y];q1.pop());
		for(;v[q2.top().y];q2.pop());
		if(q.top()+q2.top().x<q1.top().x){
			x=q2.top();
			m-=x.x+q.top();
			if(m<0) break;
			q.pop(); q.push(p[x.y]-c[x.y]);
			v[x.y]=1; q2.pop();
		} else {
			x=q1.top();
			m-=x.x;
			if(m<0) break;
			v[x.y]=1; q1.pop();
		}
	}
	printf("%d\n",ans);
}

Details

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

Test #1:

score: 10
Accepted
time: 17ms
memory: 2704kb

input:

50000 30828 852557364841
682084050 257603011
870868024 517458094
732267860 201407488
777566656 55879...

output:

17903

result:

ok single line: '17903'

Test #2:

score: 10
Accepted
time: 19ms
memory: 2604kb

input:

50000 10508 8982273367520
34111224 12372852
549875017 525549262
357107918 219952140
644308048 222008...

output:

37621

result:

ok single line: '37621'

Test #3:

score: 10
Accepted
time: 17ms
memory: 2668kb

input:

50000 23114 535861686266
359271294 298114231
605400720 491693949
755566780 539381575
155586610 92962...

output:

14723

result:

ok single line: '14723'

Test #4:

score: 10
Accepted
time: 21ms
memory: 2612kb

input:

50000 13490 4616703243118
286358449 133228996
162995754 17235506
661390160 561824344
282751480 15433...

output:

30961

result:

ok single line: '30961'

Test #5:

score: 10
Accepted
time: 25ms
memory: 2684kb

input:

50000 26352 8630976119100
70133466 32927792
90392510 89764542
307782646 75889114
123168574 66039130
...

output:

42944

result:

ok single line: '42944'

Test #6:

score: 10
Accepted
time: 7ms
memory: 2604kb

input:

50000 11800 213255455323
405512104 311547645
122797690 35257030
782246460 533338866
416860264 504733...

output:

9869

result:

ok single line: '9869'

Test #7:

score: 10
Accepted
time: 18ms
memory: 2660kb

input:

50000 19734 4267681411347
732638120 327229436
361949068 274173372
539440696 285784669
94445920 84513...

output:

32498

result:

ok single line: '32498'

Test #8:

score: 10
Accepted
time: 13ms
memory: 2492kb

input:

50000 254 18445304121
375481124 36148026
388507104 183081259
261838134 179691990
485282800 209534680...

output:

1564

result:

ok single line: '1564'

Test #9:

score: 10
Accepted
time: 11ms
memory: 2592kb

input:

50000 3260 4076050769242
210627773 8756794
68253913 5333287
812306900 176444281
561388618 94960450
6...

output:

23173

result:

ok single line: '23173'

Test #10:

score: 10
Accepted
time: 19ms
memory: 2800kb

input:

50000 44485 12129791734731
590854222 262410600
992399148 641692708
219274382 56485932
730651726 4088...

output:

49537

result:

ok single line: '49537'