# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
739937 | Unforgettablepl | Hotel (CEOI11_hot) | C++17 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
/*
ID: samikgo1
TASK:
LANG: C++
*/
#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ll;
typedef pair<ll,ll> pll;
#define all(x) x.begin(),x.end()
#define allr(x) x.rbegin(),x.rend()
//#define f first
//#define s second
//#define x first
//#define y second
const int INF = INT32_MAX;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
// freopen("measurement.in","r",stdin);
// freopen("measurement.out","w",stdout);
ll n,m,o;
cin >> n >> m >> o;
vector<pll> rooms(n);
vector<pll> offers(m);
for(pll&i:rooms)cin>>i.second>>i.first;
for(pll&i:offers)cin>>i.first>>i.second;
set<pll> roomss(all(rooms));
sort(allr(offers));
vector<ll> ans;
for (pll &i: offers) {
// i.first is rate
// i.second is requirement
auto room = roomss.lower_bound(make_pair(i.second,(ll)0));
if(room==roomss.end()){ continue;}
if(room->second<i.first){
// Rate is gud
ans.emplace_back(i.first-room->second);
roomss.erase(room);
}
}
sort(allr(ans));
ll anss = 0;
for (int i = 0; i < min(o,ans.size()); i++) {
anss += ans[i];
}
cout << anss;
}