Submission #1222262

#TimeUsernameProblemLanguageResultExecution timeMemory
1222262overwatch9Bikeparking (EGOI24_bikeparking)C++20
9 / 100
226 ms37984 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; int main() { int n; cin >> n; set <pair <ll, ll>> X, Y; for (int i = 0; i < n; i++) { int tp; cin >> tp; X.insert({i, tp}); } for (int i = 0; i < n; i++) { int tp; cin >> tp; Y.insert({tp, -i}); } ll ans = 0; set <pair <ll, ll>> todo; for (int i = 0; i < n; i++) { int y = Y.rbegin()->first; int id = -Y.rbegin()->second; Y.erase(--Y.end()); while (y > 0) { auto it = X.lower_bound({id, 0}); if (it == X.begin()) { if (y == 0) break; todo.insert({y, -id}); break; } it--; int x = it->second; int id2 = it->first; X.erase(it); int amt = min(x, y); ans += amt; x -= amt; y -= amt; if (x > 0) { X.insert({id2, x}); // y = 0 break; } } } for (auto i : todo) { int y = i.first; int id = i.second; auto it = X.lower_bound({id, 0}); if (it->first != id) ans -= y; } cout << ans << '\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...