Submission #1302548

#TimeUsernameProblemLanguageResultExecution timeMemory
1302548duyanhchupapiSchools (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...