Submission #1163500

#TimeUsernameProblemLanguageResultExecution timeMemory
1163500YSH2020Akcija (COCI21_akcija)C++20
50 / 110
25 ms552 KiB
#include <bits/stdc++.h> using namespace std; #define int long long 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(); taken.pop(); ans += a[i].second; taken.push(a[i].second); } } } return {(int) taken.size(), ans} ; } bool comp(pair<int, int> x, pair<int, int> y) { if (x.first != y.first) return x.first > y.first; return x.second < y.second; }; signed 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'; if (k > 1) { vector<pair<int, int>> tmp(n); for (int i = 0; i < n; i++) { tmp[i] = solve(a, i); } sort(tmp.begin(), tmp.end(), comp); for (int i = 0; i < n; i++) { if (tmp[i] != ans) { cout << tmp[i].first << ' ' << tmp[i].second << '\n'; return 0; } } } }
#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...