Submission #535013

#TimeUsernameProblemLanguageResultExecution timeMemory
535013christinelynnGarage (IOI09_garage)C++17
100 / 100
3 ms332 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const ll mod = 1e9 + 7; #pragma GCC optimize("Ofast") #define vi vector<int> #define vll vector<ll> #define pii pair<int, int> #define mp make_pair #define pb push_back #define lb lower_bound #define ub upper_bound #define fi first #define sc second #define endl '\n' #define gl ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int main() { int n, m; cin >> n >> m; int r[n + 1], w[m + 1], p[m + 1]; priority_queue<int, vector<int>, greater<int> > ada; queue<int> q; for(int i = 1; i <= n; i++) cin >> r[i]; for(int i = 1; i <= m; i++) cin >> w[i]; ll ans = 0; for(int i = 1; i <= n; i++) ada.push(i); for(int i = 1; i <= 2 * m; i++){ int x; cin >> x; if(x > 0){ if(ada.empty()) q.push(x); else{ int pos = ada.top(); ada.pop(); ans += r[pos] * w[x]; p[x] = pos; } } else{ x *= -1; ada.push(p[x]); if(!q.empty()){ int pake = q.front(); int pos = ada.top(); ada.pop(); q.pop(); ans += r[pos] * w[pake] * 1LL; p[pake] = pos; } } } cout << ans << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...