Submission #1245603

#TimeUsernameProblemLanguageResultExecution timeMemory
1245603gmalex98Garage (IOI09_garage)C++20
100 / 100
1 ms328 KiB
#include <bits/stdc++.h> using namespace std; int main() { int n, m, res = 0; cin >> n >> m; vector<int> rates(n); for (int i = 0; i < n; ++i) cin >> rates[i]; vector<int> weights(m); for (int i = 0; i < m; ++i) cin >> weights[i]; priority_queue<int, vector<int>, greater<int>> free_spots; for (int i = 0; i < n; ++i) free_spots.push(i); queue<int> waiting; unordered_map<int, int> parked; for (int i = 0; i < 2 * m; ++i) { int x; cin >> x; if (x > 0) { x--; // 0-based if (!free_spots.empty()) { int spot = free_spots.top(); free_spots.pop(); res += weights[x] * rates[spot]; parked[x] = spot; } else { waiting.push(x); } } else { x = -x - 1; if (parked.find(x) == parked.end()) { continue; // skip auto koji nije parkiran } int spot = parked[x]; parked.erase(x); if (!waiting.empty()) { int next = waiting.front(); waiting.pop(); res += weights[next] * rates[spot]; parked[next] = spot; } else { free_spots.push(spot); } } } cout << res << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...