제출 #546363

#제출 시각아이디문제언어결과실행 시간메모리
546363blueHotel (CEOI11_hot)C++17
100 / 100
1082 ms63096 KiB
#include <iostream> #include <vector> #include <set> #include <algorithm> using namespace std; using ll = long long; using vll = vector<ll>; using pll = pair<ll, ll>; #define sz(x) int(x.size()) int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n, m, o; cin >> n >> m >> o; multiset<pll> rooms; //(capacity, upkeep) for(int i = 1; i <= n; i++) { ll c, p; cin >> c >> p; rooms.insert({p, c}); } vector<pll> offers(m); //(capacity requirement = first, gain = second) for(int j = 0; j < m; j++) { cin >> offers[j].second >> offers[j].first; } sort(offers.begin(), offers.end(), [] (pll U, pll V) { return U.second > V.second; }); ll res = 0; vector<ll> options; for(pll z : offers) { // cerr << "offer = " << z.first << ' ' << z.second << '\n'; ll capreq = z.first; ll gain = z.second; auto f = rooms.lower_bound({capreq, -1}); if(f == rooms.end()) continue; if(gain > f->second) { options.push_back(gain - f->second); } rooms.erase(f); } sort(options.begin(), options.end()); for(int i = sz(options)-1; i >= 0 && i >= sz(options)-o; i--) res += options[i]; cout << res << '\n'; }
#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...