Submission #973038

#TimeUsernameProblemLanguageResultExecution timeMemory
973038kiddiGarage (IOI09_garage)C++14
100 / 100
2 ms388 KiB
#include <bits/stdc++.h> #include <queue> using namespace std; int n, m; int val[101]; int tingd[2001]; map<int, int> hvar; priority_queue<int> rod; queue<int> bilar; int tala; int svar = 0; int main() { cin >> n >> m; for (int x = 1; x < 1+n; x++) { cin >> val[x]; rod.push(-x); } for (int x = 1; x < 1+m; x++) { cin >> tingd[x]; } for (int x = 0; x < m*2; x++) { cin >> tala; if (tala > 0) { if (!rod.empty()) { hvar[tala] = abs(rod.top()); rod.pop(); //cout << hvar[tala] << ' ' << tala << ' ' << val[hvar[tala]]*tingd[tala] << endl; svar += val[hvar[tala]]*tingd[tala]; } else { bilar.push(tala); } } else { tala = -tala; rod.push(-hvar[tala]); if (!bilar.empty()) { tala = bilar.front(); bilar.pop(); hvar[tala] = abs(rod.top()); rod.pop(); //cout << "??" << endl; svar += val[hvar[tala]]*tingd[tala]; } } } cout << svar << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...