#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |