Submission #949487

#TimeUsernameProblemLanguageResultExecution timeMemory
949487LOLOLOSchools (IZhO13_school)C++17
70 / 100
106 ms10688 KiB
#include <bits/stdc++.h> typedef long long ll; #define f first #define s second #define pb push_back #define ep emplace #define eb emplace_back #define lb lower_bound #define ub upper_bound #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define uniquev(v) sort(all(v)), (v).resize(unique(all(v)) - (v).begin()) #define mem(f,x) memset(f , x , sizeof(f)) #define sz(x) (int)(x).size() #define __lcm(a, b) (1ll * ((a) / __gcd((a), (b))) * (b)) #define mxx *max_element #define mnn *min_element #define cntbit(x) __builtin_popcountll(x) using namespace std; const int N = 4e5 + 100; bool cmp(pair <int, int> A, pair <int, int> B) { return A.f - A.s > B.f - B.s; } ll pr[N], suff[N]; int solve() { int n, m, s; cin >> n >> m >> s; vector <pair <int, int>> save; for (int i = 0; i < n; i++) { int a, b; cin >> a >> b; save.pb({a, b}); } sort(all(save), cmp); priority_queue <ll, vector <ll>, greater <ll>> pq; ll sum = 0; for (int i = 0; i < n; i++) { pq.push(save[i].f); sum += save[i].f; while (sz(pq) > m) { sum -= pq.top(); pq.pop(); } pr[i] = sum; } while (sz(pq)) pq.pop(); sum = 0; for (int i = n - 1; i >= 0; i--) { pq.push(save[i].s); sum += save[i].s; while (sz(pq) > s) { sum -= pq.top(); pq.pop(); } suff[i] = sum; } ll ans = 0; for (int i = 0; i < n - 1; i++) { if (n - i - 1 >= s && i >= m - 1) ans = max(ans, pr[i] + suff[i + 1]); } return ans; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t = 1; //cin >> t; while (t--) { cout << solve() << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...