제출 #242639

#제출 시각아이디문제언어결과실행 시간메모리
242639kshitij_sodani학교 설립 (IZhO13_school)C++17
100 / 100
537 ms36440 KiB
#include <bits/stdc++.h>
using namespace std;
typedef int64_t llo;
#define mp make_pair
#define pb push_back
#define a first 
#define b second
//#define endl '\n'
llo n,m,s;

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cin>>n>>m>>s;
	vector<pair<llo,llo>> kk;
	for(llo i=0;i<n;i++){
		llo aa,bb;
		cin>>aa>>bb;
		kk.pb({aa,bb});
	}
	sort(kk.begin(),kk.end());
	llo su=0;
	reverse(kk.begin(),kk.end());
	set<pair<llo,llo>> ss;
	set<pair<llo,llo>> tt;
	set<pair<llo,llo>> mm;
	for(llo i=0;i<n;i++){
		if(i<m){
			su+=kk[i].a;
			ss.insert({kk[i].a-kk[i].b,i});
		}		
		else{
			tt.insert({-kk[i].b,i});
			mm.insert({-kk[i].a,i});
		}
	}
	if(m==n){
		cout<<su<<endl;
		return 0;
	}
	for(llo i=0;i<s;i++){
		llo x=-(*tt.begin()).a;
		llo y=-(*ss.begin()).a-(*mm.begin()).a;
		if(y>x){
			su+=y;
			ss.erase(ss.begin());
			pair<llo,llo> no=*(mm.begin());
			mm.erase(mm.begin());
			tt.erase({-kk[no.b].b,no.b});
			ss.insert({kk[no.b].a-kk[no.b].b,no.b});
		}
		else{
			pair<llo,llo> no=*(tt.begin());
			mm.erase({-kk[no.b].a,no.b});
			tt.erase(tt.begin());
			su+=x;
		}
	}
	cout<<su<<endl;

	






	
	return 0;
}

#Verdict Execution timeMemoryGrader output
Fetching results...