Submission #632235

#TimeUsernameProblemLanguageResultExecution timeMemory
632235deviceGarage (IOI09_garage)C++17
100 / 100
2 ms340 KiB
#include <bits/stdc++.h> using namespace std; int main(){ int n,m,ans = 0; cin >> n >> m; int space[n+1], car[m+1], curs[n+1] = {0}, curc[m+1] = {0}, available = n; queue<int> q; for(int i = 1; i <= n; i++) cin >> space[i]; for(int i = 1; i <= m; i++) cin >> car[i]; for(int i = 1; i <= 2*m; i++){ int cmd; cin >> cmd; if(cmd > 0){ int ptr = 1; while(curs[ptr] != 0 && ptr < n) ptr++; if(ptr == n){ q.push(cmd); }else{ curc[cmd] = ptr; curs[ptr] = cmd; ans += car[cmd] * space[ptr]; available--; } }else{ curs[curc[cmd*-1]] = 0; curc[cmd*-1] = 0; available++; } while(!q.empty()){ if(available == 0) break; int ptr = 1; while(curs[ptr] != 0 && ptr < n) ptr++; curc[q.front()] = ptr; curs[ptr] = q.front(); ans += car[q.front()] * space[ptr]; available--; q.pop(); } } cout << ans << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...