Submission #1176683

#TimeUsernameProblemLanguageResultExecution timeMemory
1176683discontinuousGarage (IOI09_garage)C++20
40 / 100
1 ms332 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; void solve() { cin >> n; vector<int> arr(n); for(int j = 0; j<n; j++) { cin >> arr[j]; } } int main() { ios::sync_with_stdio(false); cout.tie(0); cin.tie(0); cin >> n >> m; vector<int> parking(n); vector<int> 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()); int tt = 2*m; int a = 0; ll totalEarnings = 0; queue<int> carqueue; vector<bool> occupied(n, false); vector<int> parked(m, -1); // bool allOccupied = false; while(tt--) { int inp; cin >> inp; if(inp > 0) { bool done = false; for(int j = 0; j<n; j++) { if(occupied[j] == false) { occupied[j] = true; totalEarnings += weights[inp-1] * parking[j]; parked[inp-1] = j+1; done = true; break; } } if(done == false) { carqueue.push(inp); } } else { inp = abs(inp); occupied[parked[inp-1]-1] = false; if(!(carqueue.empty())) { totalEarnings += parking[parked[inp-1]-1] * weights[carqueue.front()-1]; occupied[inp-1] = true; carqueue.pop(); } } if(!(carqueue.empty())) cout << carqueue.front() << " " << carqueue.size() << " "; // cout << totalEarnings << "\n"; } cout << totalEarnings; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...