UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#215274#2639. 省钱meixuan100481ms4264kbC++1.4kb2024-11-27 21:58:412024-11-27 23:40:04

answer

#include<bits/stdc++.h>
#define int long long
using namespace std;
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > q1;
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > > q2;
priority_queue<int,vector<int>,greater<int> > q3;
int q[1000001],w[1000001]; 
bool vis[1000001];
signed main(){
	int n,k,s,now=0,ans=0;
	cin >>n>>k>>s;
	for(int i=1;i<=n;i++){
		cin >>w[i]>>q[i];
		q1.push(make_pair(w[i],i));
		q2.push(make_pair(q[i],i));
	}
	for(int i=1;i<=k;i++){
		if(q2.empty())break;
		if(now+q2.top().first>s){
			cout <<ans;
			return 0;
		}
	//	cout <<now<<endl;
		now+=q2.top().first;
		ans++;
		vis[q2.top().second]=1;
		q3.push(w[q2.top().second]-q2.top().first);
		q2.pop();
	}
//	cout <<ans<<endl;
//	cout <<now<<endl;
	while((!q1.empty())&&(!q2.empty())){
		while((!q1.empty())&&vis[q1.top().second])q1.pop();
		while((!q2.empty())&&vis[q2.top().second])q2.pop();
		if(q1.top().first<q2.top().first+q3.top()){
	//		cout <<q1.top().second<<' '<<now+q1.top().first<<' '<<s<<endl;
			if(now+q1.top().first>s)break;
			now+=q1.top().first;
			ans++;
			vis[q1.top().second]=1;
			q1.pop();
		}
		else{
			if(q2.top().first+q3.top()+now>s)break;
	//		cout <<"aaa"<<endl;
			now+=q2.top().first+q3.top();
			ans++;
			vis[q2.top().second]=1;
			q3.pop();
			q3.push(w[q2.top().second]-q2.top().first);
			q2.pop();
		}
		if(ans>=n)break;
	}
	cout <<ans;
}

详细

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

Test #1:

score: 10
Accepted
time: 42ms
memory: 3996kb

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: 55ms
memory: 3736kb

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: 46ms
memory: 3732kb

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: 53ms
memory: 3736kb

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: 49ms
memory: 3996kb

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: 47ms
memory: 3736kb

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: 48ms
memory: 4000kb

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: 43ms
memory: 3736kb

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: 49ms
memory: 3732kb

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: 49ms
memory: 4264kb

input:

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

output:

49537

result:

ok single line: '49537'