Submission #1301442

#TimeUsernameProblemLanguageResultExecution timeMemory
1301442PetrixSchools (IZhO13_school)C++20
75 / 100
122 ms10644 KiB
#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 timeMemoryGrader output
Fetching results...