Submission #924800

#TimeUsernameProblemLanguageResultExecution timeMemory
924800boris_mihovGarage (IOI09_garage)C++17
100 / 100
1 ms460 KiB
#include <algorithm> #include <iostream> #include <numeric> #include <cassert> #include <vector> #include <queue> #include <set> typedef long long llong; const int MAXN = 2000 + 10; const int INF = 1e9; int n, m, p; int r[MAXN]; int w[MAXN]; int at[MAXN]; int takenBy[MAXN]; std::queue <int> q; std::set <int> avaliable; void solve() { for (int i = 1 ; i <= n ; ++i) { avaliable.insert(i); } int ans = 0; for (int i = 1 ; i <= 2 * m ; ++i) { int idx; std::cin >> idx; if (idx > 0) { q.push(idx); } else { idx = -idx; takenBy[at[idx]] = 0; avaliable.insert(at[idx]); } while (avaliable.size() && q.size()) { int front = q.front(); q.pop(); ans += r[*avaliable.begin()] * w[front]; takenBy[*avaliable.begin()] = front; at[front] = *avaliable.begin(); avaliable.erase(avaliable.begin()); } } std::cout << ans << '\n'; } void input() { std::cin >> n >> m; for (int i = 1 ; i <= n ; ++i) { std::cin >> r[i]; } for (int i = 1 ; i <= m ; ++i) { std::cin >> w[i]; } } void fastIOI() { std::ios_base :: sync_with_stdio(0); std::cout.tie(nullptr); std::cin.tie(nullptr); } int main() { fastIOI(); input(); solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...