Submission #170468

#TimeUsernameProblemLanguageResultExecution timeMemory
170468AlexLuchianovGarage (IOI09_garage)C++14
100 / 100
5 ms380 KiB
#include <iostream> #include <vector> #include <queue> #include <algorithm> using namespace std; using ll = long long; #define MIN(a, b) (((a) < (b)) ? (a) : (b)) #define MAX(a, b) (((a) < (b)) ? (b) : (a)) int const nmax = 2000; int coef[1 + nmax], weight[1 + nmax]; int place[1 + nmax]; int main() { int n, m; cin >> n >> m; for(int i = 1;i <= n; i++) cin >> coef[i]; for(int i = 1; i <= m; i++) cin >> weight[i]; priority_queue<int, vector<int>, greater<int>> pq; for(int i = 1; i <= n; i++) pq.push(i); ll result = 0; queue<int> q; for(int i = 1;i <= 2 * m; i++){ int op; cin >> op; if(op < 0){ op = -op; pq.push(place[op]); } else q.push(op); while(0 < q.size() && 0 < pq.size()){ int car = q.front(); q.pop(); int target = pq.top(); pq.pop(); place[car] = target; result += weight[car] * coef[target]; } } cout << result; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...