Submission #555268

#TimeUsernameProblemLanguageResultExecution timeMemory
555268OrazBGarage (IOI09_garage)C++17
55 / 100
2 ms468 KiB
#include <bits/stdc++.h> #define ff first #define ss second #define cont continue; #define sz size() #define pb push_back using namespace std; typedef long long ll; const int N = 20005; priority_queue <pair <int, int>, vector<pair <int, int>>, greater<pair <int, int>>> v; queue <int> q; int a, b[N], l, n, kl; int sum; map <int, vector <pair <int, int>>> m; int main() { ios::sync_with_stdio(false); cin.tie(0); // freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); cin >> n >> kl; for (int i = 1; i <= n; ++i) { cin >> a; v.push({i, a}); } for (int i = 1; i <= kl; ++i) { cin >> b[i]; } int jp = 2 * kl; while ( jp-- ) { cin >> l; if (l > 0) q.push(l); int a1 = q.front(); if (l > 0) { if (!v.empty()) { q.pop(); m[a1].pb ({v.top().first,v.top().second}); v.pop(); } } else { // q.pop(); l *= -1; sum += (b[l] * m[l][0].ss); v.push({m[l][0].ff,m[l][0].ss}); m[l].clear(); if (a1 > 0) { if (!v.empty()) { q.pop(); m[a1].pb ({v.top().first,v.top().second}); v.pop(); } } } } cout << sum << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...