# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
597184 | Trisanu_Das | Hotel (CEOI11_hot) | C++17 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define int long long int
signed main(){
int n, m, o; cin >> n >> m >> o;
multiset<pair<int, int> > rooms;
for(int i = 0; i < n; i++){
int c, p; cin >> c >> p; rooms.insert({c, p});
}
pair<int, int> requests[m];
for(int i = 0; i < m; i++) cin >> requests[i].first >> requests[i].second;
sort(requests.begin(), requests.end(), [] (pair<int, int> i, pair<int, int> j)
{
return i.second > j.second;
});
int ans = 0;
vector<int> choosed;
for(pair<int, int> p : requests){
int req = p.first, price = p.second;
auto choice = rooms.lower_bound({req, -1});
if(choice == rooms.end()) continue;
if(price > choice.second) choosed.push_back(price - choice.second);
}
sort(choosed.begin(), choosed.end(), greater<int>());
for(int i = 0; i < o; i++) ans += choosed[i];
cout << ans << '\n';
}