제출 #940352

#제출 시각아이디문제언어결과실행 시간메모리
940352HappyCapybaraGarage (IOI09_garage)C++17
100 / 100
2 ms348 KiB
#include<bits/stdc++.h>
using namespace std;

#define int long long

signed 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];
    vector<bool> t(n, false);
    vector<int> s(m);
    int res = 0;
    queue<int> q;
    for (int i=0; i<2*m; i++){
        int x;
        cin >> x;
        if (x < 0){
            x++; x = -x;
            t[s[x]] = false;
            if (!q.empty()){
                t[s[x]] = true;
                s[q.front()] = s[x];
                //cout << r[s[x]] << " " << w[q.front()] << ": ";
                res += r[s[x]] * w[q.front()];
                q.pop();
                //cout << res << "\n";
            }
            continue;
        }
        x--;
        int j = 0;
        while (t[j] && j<n) j++;
        if (j == n){
            q.push(x);
            continue;
        }
        t[j] = true;
        s[x] = j;
        res += r[j] * w[x];
        //cout << res << "\n";
    }
    cout << res << "\n";
}
#Verdict Execution timeMemoryGrader output
Fetching results...