Submission #1163460

#TimeUsernameProblemLanguageResultExecution timeMemory
1163460gelastropodAkcija (COCI21_akcija)C++20
10 / 110
5080 ms525840 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

signed main() {
	int n, k, a, b;
	cin >> n >> k;
	vector<vector<int>> vals(n + 1, vector<int>());
	vector<pair<int, int>> valss;
	for (int i = 0; i < n; i++) {
		cin >> a >> b;
		vals[b].push_back(a);
		valss.push_back({b, a});
	}
	sort(valss.begin(), valss.end());
	for (int i = 1; i <= n; i++)
		sort(vals[i].begin(), vals[i].end());
	vector<pair<int, int>> anss;
	for (int i = 0; i < (1LL << n); i++) {
		pair<int, int> crnt = {0, 0};
		bool works = true;
		for (int j = 0; j < n; j++) {
			if ((i & (1LL << j))) {
				if (-crnt.first < valss[j].first) {
					crnt.first--;
					crnt.second += valss[j].second;
				}
				else {
					works = false;
					break;
				}
			}
		}
		if (!works) continue;
		anss.push_back(crnt);
	}
	sort(anss.begin(), anss.end());
	for (int i = 0; i < k; i++) {
		cout << -anss[i].first << ' ' << anss[i].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...