UOJ Logo

NOI.AC

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#215252#2639. 省钱STASISZHY100183ms4440kbC++111.3kb2024-11-27 20:26:372024-11-27 23:38:17

answer

// Problem: B. 省钱
// Contest: undefined - NOIP2024训练赛 15
// URL: http://noi.ac/contest/1167/problem/2639
// Memory Limit: 1024 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include<bits/stdc++.h>
#define int long long
#define x first
#define y second

using namespace std;

const int N = 5e4 + 10;

int n, k, m, ans;
int c[N], p[N];
bool vis[N];

priority_queue<pair<int, int>, vector<pair<int, int> >, greater<pair<int, int> > > price, afteruse;
priority_queue<int, vector<int>, greater<int> > change;

signed main()
{
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	cin >> n >> k >> m;
	for(int i = 1; i <= n; i ++)
	{
		cin >> p[i] >> c[i];
		price.push({p[i], i});
		afteruse.push({c[i], i});
	}
	for(int i = 1; i <= k; i ++) change.push(0);
	while(!price.empty())
	{
		auto cowa = price.top();
		auto cowb = afteruse.top();
		if(vis[cowa.y]) {price.pop(); continue;}
		if(vis[cowb.y]) {afteruse.pop(); continue;}
		if(!change.empty() && change.top() > cowa.x - cowb.x)
		{
			m -= cowa.x; price.pop();
			vis[cowa.y] = true;
		}
		else
		{
			m -= cowb.x + change.top();
			if(!change.empty()) change.pop();
			afteruse.pop();
			vis[cowb.y] = true;
			change.push(p[cowb.y] - c[cowb.y]);
		}
		if(m >= 0) ans ++;
		else break;
	}
	cout << ans << '\n';
	return 0;
}

Details

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

Test #1:

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

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: 24ms
memory: 3668kb

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: 14ms
memory: 3928kb

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: 22ms
memory: 3668kb

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: 27ms
memory: 3932kb

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: 13ms
memory: 3664kb

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: 15ms
memory: 3928kb

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: 6ms
memory: 3668kb

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: 15ms
memory: 3664kb

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: 29ms
memory: 4440kb

input:

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

output:

49537

result:

ok single line: '49537'