#include <iostream>
#include <algorithm>
#include <set>
using namespace std;
int a1[300005],a2[300005];
pair<int,int> v[300005];
multiset<long long> s;
bool cmp(pair<int,int> a1,pair<int,int> b1){
return a1.first-a1.second>b1.first-b1.second;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int i,sum=0,n,a,b,rasp=0;
cin>>n>>a>>b;
for(i=1;i<=n;i++) cin>>v[i].first>>v[i].second;
sort(v+1,v+n+1,cmp);
for(i=1;i<=n;i++){
sum+=v[i].first;
s.insert(v[i].first);
if(s.size()>a){
sum-=*s.begin();
s.erase(s.begin());
}
a1[i]=sum;
}
s.clear();sum=0;
for(i=n;i>=1;i--){
sum+=v[i].second;
s.insert(v[i].second);
if(s.size()>b){
sum-=*s.begin();
s.erase(s.begin());
}
a2[i]=sum;
}
for(i=a;i<=n-b;i++) rasp=max(rasp,a1[i]+a2[i+1]);
cout<<rasp;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |