Submission #1176715

#TimeUsernameProblemLanguageResultExecution timeMemory
1176715discontinuousGarage (IOI09_garage)C++20
100 / 100
1 ms400 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define pb push_back const ll MOD = 1e9 + 7; ll n, m, k, a, b, c, d, x, y; int main() { ios::sync_with_stdio(false); cout.tie(0); cin.tie(0); cin >> n >> m; vector<ll> parking(n); vector<ll> weights(m); for(int j = 0; j<n; j++) cin >> parking[j]; for(int j = 0; j<m; j++) cin >> weights[j]; // sort(parking.begin(), parking.end()); ll tt = 2*m; ll totalEarnings = 0; queue<ll> carqueue; vector<bool> occupied(n, false); vector<ll> parked(m, -1); while(tt--) { int inp; cin >> inp; if(inp > 0) { bool done = false; for(int i = 0; i<n; i++) { if(occupied[i] == false) { occupied[i] = true; parked[inp-1] = i+1; done = true; totalEarnings += weights[inp-1] * parking[i]; break; } } if(done == false) { carqueue.push(inp); } } else { inp = (-1)*(inp); occupied[parked[inp-1]-1] = false; if(carqueue.empty() == false) { // cout << parked[inp-1]-1 << " " << weights[carqueue.front()-1] << " "; totalEarnings += parking[parked[inp-1]-1] * weights[carqueue.front()-1]; occupied[parked[inp-1]-1] = true; parked[carqueue.front()-1] = parked[inp-1]; carqueue.pop(); } } // if(carqueue.empty() == false) cout << carqueue.front() << " "; // cout << totalEarnings << "\n"; } cout << totalEarnings; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...