Submission #211799

#TimeUsernameProblemLanguageResultExecution timeMemory
211799MarcVanaHotel (CEOI11_hot)C++14
0 / 100
1710 ms49836 KiB
#include <iostream> #include <algorithm> #include <set> #define NMAX 500005 using namespace std; struct room { int cost, capacity; } ROOMS[NMAX], A; multiset <room> MS; multiset <room> :: iterator it; struct offer { int price, dimension; } OFFERS[NMAX]; long long ANSWER; int N, M, NO, DIF[NMAX]; bool operator < (const room& X, const room& Y) { if (X.capacity!=Y.capacity) return X.capacity<Y.capacity; return X.cost<Y.cost; } bool cmpOF(offer A, offer B) { if (A.price > B.price) return true; return false; } int main() { cin >> N >> M >> NO; for (int i = 1; i <= N; ++i) { cin >> ROOMS[i].cost >> ROOMS[i].capacity; MS.insert(ROOMS[i]); } for (int i = 1; i <= M; ++i) cin >> OFFERS[i].price >> OFFERS[i].dimension; sort(OFFERS + 1, OFFERS + M + 1, cmpOF); for (int i = 1; i <= M; ++i) { A.cost = 0, A.capacity = OFFERS[i].dimension; it = MS.upper_bound(A); if (it == MS.end()) continue; A = (*it); DIF[i] = OFFERS[i].price - A.cost; } sort(DIF + 1, DIF + M + 1); for (int i = M; i > M - NO; --i) if (DIF[i] > 0) ANSWER += DIF[i]; cout << ANSWER; 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...