Submission #727511

#TimeUsernameProblemLanguageResultExecution timeMemory
727511beaconmcHotel (CEOI11_hot)C++14
100 / 100
2011 ms101832 KiB


#include <bits/stdc++.h>

typedef long long ll;
using namespace std;

#define FOR(i, x, y) for(ll i=x; i<y; i++)
#define FORNEG(i, x, y) for(ll i=x; i>y; i--)
#define fast() ios_base::sync_with_stdio(false);cin.tie(NULL)

//{capacity, cost}
vector<vector<ll>> stuff;
vector<ll> profit;
multiset<vector<ll>> idk;

int main(){
  ll n,m,o;
  cin >> n >> m >> o;
  FOR(i,0,n){
    ll a,b;
    cin >> a >> b;
    idk.insert({b,a});
  }
  FOR(i,0,m){
    ll a,b;
    cin >> a >> b;
    stuff.push_back({a,b});
  }

  sort(stuff.begin(), stuff.end());
  reverse(stuff.begin(), stuff.end());
  vector<ll> profits;

  for (auto&i : stuff){
    if (idk.size()){
      auto it = idk.upper_bound({i[1], 0});
      if (it == idk.end()) continue;

      ll sus = (*idk.upper_bound({i[1], 0}))[1];
      profits.push_back(i[0] - sus);

      idk.erase(idk.upper_bound({i[1], 0}));
    }
  }
  sort(profits.begin(), profits.end());
  reverse(profits.begin(), profits.end());
  ll ans = 0;
  FOR(i,0,min((ll)o, (ll) profits.size())){
    ans += max((ll) 0, (ll) profits[i]);
  }
  cout << ans;






}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...