Submission #1224833

#TimeUsernameProblemLanguageResultExecution timeMemory
1224833santi3223Garage (IOI09_garage)C++20
100 / 100
1 ms328 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define vb vector<bool> #define pb push_back #define ff(aa, bb, cc) for(ll aa = bb; aa < cc; aa++) #define vl vector<ll> #define pll pair<ll, ll> #define fi first #define se second #define ed "\n" #define all(aaa) aaa.begin(), aaa.end() #define rall(aaa) aaa.rbegin(), aaa.rend() int main(){ ll n, m; cin >> n >> m; vl s(n); priority_queue<ll, vl, greater<ll>> available; ff(i, 0, n){ available.push(i); cin >> s[i]; } vl w(m); ff(i, 0, m){ cin >> w[i]; } queue<ll> waitlist; ll aaa = 2*m; vl car_isin(m); ll fin = 0; while(aaa--){ ll car; cin >> car; bool irse = false; if(car < 0){ irse = true; } car = abs(car); car--; if(!irse){ if(available.empty()){ waitlist.push(car); } else{ ll id = available.top(); fin += w[car]*s[id]; car_isin[car] = id; available.pop(); } } else{ ll id = car_isin[car]; available.push(id); if(!waitlist.empty()){ ll curid = available.top(); ll curcar = waitlist.front(); waitlist.pop(); fin += w[curcar]*s[curid]; car_isin[curcar] = curid; available.pop(); } } } cout << fin; }
#Verdict Execution timeMemoryGrader output
Fetching results...