제출 #1224176

#제출 시각아이디문제언어결과실행 시간메모리
1224176diegoangulo5Garage (IOI09_garage)C++20
100 / 100
1 ms328 KiB
#include <bits/stdc++.h>

using namespace std;

int main() {
    int n, m;
    cin >> n >> m;
    vector<int> R(n);
    for (int i = 0; i < n; ++i) {
        cin >> R[i];
    }
    vector<int> W(m);
    for (int i = 0; i < m; ++i) {
        cin >> W[i];
    }
    queue<int> carsWaiting;
    vector<int> carIsIn(m + 1, -1);
    priority_queue<int, vector<int>, greater<int>> lotsAvailable;
    for (int i = 1; i <= n; ++i) {
        lotsAvailable.push(i);
    }
    m *= 2;
    int val;
    long long revenue = 0;
    while (m--) {
        cin >> val;
        if (val > 0) {
            carsWaiting.push(val);
        } else {
            lotsAvailable.push(carIsIn[-val]);
            carIsIn[-val] = -1;
        }
        while (!carsWaiting.empty() && !lotsAvailable.empty()) {
            int car = carsWaiting.front();
            int lot = lotsAvailable.top();
            carsWaiting.pop();
            lotsAvailable.pop();
            carIsIn[car] = lot;
            revenue += R[lot - 1] * W[car - 1];
        }
    }
    cout << revenue << endl;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...