제출 #462961

#제출 시각아이디문제언어결과실행 시간메모리
462961danielsuhGarage (IOI09_garage)C++17
50 / 100
2 ms588 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define int ll const int mxN = 2005; int carSpot[mxN]; int32_t main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N, M; cin >> N >> M; vector<int> prices(N + 1), cars(M + 1); for(int i = 1; i <= N; i++) cin >> prices[i]; for(int i = 1; i <= M; i++) cin >> cars[i]; set<int> free; for(int i = 1; i <= N; i++) { free.insert(i); } deque<int> line; int ans = 0; for(int i = 0; i < 2 * M; i++) { int step; cin >> step; //for(auto &x : free) cout << x << " "; //cout << "\n"; if(step > 0) { if(free.empty()) { line.push_back(step); continue; } int space = *free.begin(); free.erase(*free.begin()); ans += cars[step] * prices[space]; carSpot[step] = space; }else { free.insert(carSpot[-step]); assert(carSpot[-step] != 0); if(line.size() > 1) { assert(free.size() == 1); } if(!free.empty() && !line.empty()) { int car = *line.begin(); ans += cars[car] * prices[carSpot[-step]]; carSpot[car] = carSpot[-step]; line.pop_front(); } } } cout << ans << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...