제출 #1163486

#제출 시각아이디문제언어결과실행 시간메모리
1163486YSH2020Akcija (COCI21_akcija)C++20
10 / 110
1 ms328 KiB
#include <bits/stdc++.h>
using namespace std;



pair<int, long long> solve(vector<pair<int, int>> a, int d) {
	priority_queue<int> taken;
	long long ans = 0;
	for (int i = 0; i < (int)a.size(); i++) {
		if (i == d) continue;
		//case 1:
		if ((int)taken.size() < a[i].first) {
			taken.push(a[i].second);
			ans += a[i].second;
		}
		else {
			//consider to throw away or not
			if (a[i].second > taken.top()) {
				ans -= taken.top();
				ans += a[i].second;
				taken.push(a[i].second);
			}
		}
	}
	return {(int) taken.size(), ans} ;
}

int main() {
	int n; cin >> n;
	int k; cin >> k;
	vector<pair<int, int>> a(n);
	for (int i = 0; i < n; i++) cin >> a[i].second >> a[i].first;
	sort(a.begin(), a.end());
	pair<int, long long> ans = solve(a, -1);
	cout << ans.first << ' ' << ans.second << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...