Submission #1302548

#TimeUsernameProblemLanguageResultExecution timeMemory
1302548duyanhchupapi학교 설립 (IZhO13_school)C++20
100 / 100
82 ms7972 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int N = 3e5 + 5, mod = 1e9 + 7; int n, x, y; ll pf[N], sf[N]; struct hang { int a,b; } p[N]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> x >> y; for(int i=1;i<=n;++i) cin >> p[i].a >> p[i].b; sort(p+1, p+n+1, [&](const hang & p1, const hang & p2) { return p1.a - p1.b < p2.a - p2.b; }); priority_queue<int, vector<int>, greater<int>> pq; for(int i=1;i<=n;++i) { pq.push(p[i].b); pf[i] = pf[i-1] + p[i].b; if((int)pq.size() > y) { pf[i] -= pq.top(); pq.pop(); } } while(!pq.empty()) pq.pop(); for(int i=n;i>=1;--i) { pq.push(p[i].a); sf[i] = sf[i+1] + p[i].a; if((int)pq.size() > x) { sf[i] -= pq.top(); pq.pop(); } } ll ans = 0; for(int i=y;i<=n-x;++i) ans = max(ans, pf[i] + sf[i+1]); cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...