Submission #167091

#TimeUsernameProblemLanguageResultExecution timeMemory
167091itglSchools (IZhO13_school)C++14
30 / 100
457 ms9908 KiB
#include<bits/stdc++.h>
#define pb push_back
#define ff first
#define ss second
#define mp make_pair

using namespace std;

priority_queue<pair<int,pair<int,int> > > pq,pq1;
priority_queue<int> pq_m,pq_s;
int main(){
  int n,m,s;
  cin >> n >> m >> s;

  for(int i=1;i<=n;i++){
    int x,y;
    cin >> x >> y;
    pq.push(mp(x-y,mp(x,y)));
  }
  int res=0;
  //cout << "==================\n";
  while(m--){
    //cout << pq.top().ss.ff << ' ' << pq.top().ss.ss << '\n';
    res+=pq.top().ss.ff;
    pq_m.push(-pq.top().ss.ff);
    pq.pop();
  }
  //cout<<"====================\n";
  int k=pq.size();
  while(k--){
    pq1.push(mp(-pq.top().ff,mp(pq.top().ss.ff,pq.top().ss.ss)));
    pq.pop();
  }
  while(s--){
    //cout << pq1.top().ss.ff << ' ' << pq1.top().ss.ss << '\n';
    res+=pq1.top().ss.ss;
    pq_s.push(-pq1.top().ss.ss);
    pq1.pop();
  }

  while(!pq1.empty()){
    int x1,y1;
    x1=-pq_m.top();
    y1=-pq_s.top();
    if(pq1.top().ss.ff-x1>0){
      if(pq1.top().ss.ff-x1>pq1.top().ss.ss-y1){
        res+=pq1.top().ss.ff-x1;
        pq_m.pop();
        pq_m.push(-pq1.top().ss.ff);
      }
      else{
        res+=pq1.top().ss.ss-y1;
        pq_s.pop();
        pq_s.push(-pq1.top().ss.ss);
      }
    }else{
      if(pq1.top().ss.ss-y1>0){
        res+=pq1.top().ss.ss-y1;
        pq_s.pop();
        pq_s.push(-pq1.top().ss.ss);
      }
    }
    pq1.pop();
  }


  cout <<res;


  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...