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