Submission #211808

#TimeUsernameProblemLanguageResultExecution timeMemory
211808AdrianIurianHotel (CEOI11_hot)C++14
100 / 100
2001 ms34808 KiB
#include <iostream> #include <algorithm> #include <set> using namespace std; const int VAL=500005; int N, M, NRO, i, j; int dif[VAL]; long long ANS; struct camera { int cost; int cap; }; camera C[VAL], A; bool operator < (const camera &X, const camera &Y) { if (X.cap != Y.cap) return X.cap < Y.cap; return X.cost < Y.cost; } multiset <camera> H; multiset <camera> :: iterator it; struct oferta { int pret; int dim; }; oferta O[VAL]; bool cmpO(oferta A, oferta B) { return A.pret>B.pret; } int main() { cin >> N >> M >> NRO; for (i=1; i<=N; ++i) { cin >> C[i].cost >> C[i].cap; H.insert(C[i]); } for (i=1; i<=M; ++i) cin >> O[i].pret >> O[i].dim; sort(O+1, O+M+1, cmpO); for (i=1; i<=M; ++i) { A.cost = 0; A.cap = O[i].dim; it = H.upper_bound(A); if (it == H.end()) continue; A = *it; dif[i] = O[i].pret - A.cost; H.erase(it); //cout << O[i].pret << " " << A.cost << '\n'; } sort(dif+1, dif+M+1); for (i=M; i>M-NRO; --i) if (dif[i] > 0) ANS += dif[i]; cout << ANS << '\n'; return 0; }
#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...