Submission #488622

#TimeUsernameProblemLanguageResultExecution timeMemory
488622AlexandruabcdeGarage (IOI09_garage)C++14
100 / 100
1 ms332 KiB
#include <bits/stdc++.h>

using namespace std;

constexpr int NMAX = 105;
constexpr int MMAX = 2005;

int N, M;
int ans = 0;

int R[NMAX], W[MMAX];

void Read () {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    cin >> N >> M;

    for (int i = 1; i <= N; ++ i )
        cin >> R[i];

    for (int i = 1; i <= M; ++ i )
        cin >> W[i];
}

int occ[MMAX];
priority_queue <int, vector <int>, greater<int> > H;
queue <int> Q;

void Solve () {
    int ans = 0;
    for (int i = 1; i <= N; ++ i )
        H.push(i);

    for (int event = 1; event <= 2 * M; ++ event ) {
        int x;
        cin >> x;

        if (x > 0)
            Q.push(x);
        else
            H.push(occ[-x]);

        while (!Q.empty() && !H.empty()) {
            int car = Q.front();
            Q.pop();
            int park = H.top();
            H.pop();

            ans += W[car] * R[park];
            occ[car] = park;
        }
    }

    cout << ans << '\n';
}

int main () {
    Read();
    Solve();

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...