제출 #88999

#제출 시각아이디문제언어결과실행 시간메모리
88999temoyanteladzeSchools (IZhO13_school)C++14
5 / 100
471 ms54932 KiB
#include <bits/stdc++.h> #define ll long long #define x first #define y second using namespace std; int main() { ll n,l,r; ll ans=0; vector<pair<ll,ll> >a; cin>>n>>l>>r; a.resize(n+1); for(ll i=1;i<=n;i++) cin>>a[i].x>>a[i].y; sort(a.begin()+1,a.end()); reverse(a.begin()+1,a.end()); set<ll>q; set <pair<ll,ll> > os1,os2; for(ll i=1;i<=l;i++) { ans+=a[i].x; q.insert(-a[i].y+a[i].x); } for(ll i=l+1;i<=n;i++) { os1.insert(a[i]); os2.insert({a[i].y,a[i].x}); } for (ll i=r;i>0;i--){ pair<ll,ll>ft,sd; ft=*os1.rbegin(); sd=*os2.rbegin(); ll f1=-*q.begin(); if(f1+ft.x>sd.x) { ans+=ft.x+sd.x; q.erase(q.begin()); os1.erase(os1.find(ft)); os2.erase(os2.find({ft.x, ft.y})); q.insert(ft.y-ft.x); } else{ ans +=sd.x; os2.erase(os2.find(sd)); os1.erase(os1.find({sd.y, sd.x})); } } cout<< ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...