제출 #1261235

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

const int sz = 105;
int n, m;

signed main(){
    cin >> n >> m;

    vector<int> rate(n);
    vector<int> weight(m);
    vector<int> car(m + 1, 0); 
    vector<bool> used(n, false);

    for(int i = 0; i < n; i++){
        cin >> rate[i];
    }for(int i = 0; i < m; i++){
        cin >> weight[i];
    }queue<int> wait;
    int ans = 0;
    for(int i = 0; i < 2*m; i++){
        int x;
        cin >> x;
        if(x > 0){
            bool ok=false;
            for(int i = 0; i < n; i++){
                if(!used[i]){
                    car[x] = i+1;
                    ok=true;
                    used[i] = true;
                    ans += weight[x-1] * rate[i];
                    break;
                }
            }if(!ok){
                wait.push(x);
            }
        }else {
            int id = -x;
            int p = car[id];
            used[p-1] = false;
            
            car[id] = 0;

            if(!wait.empty()){
                int curr = wait.front();
                wait.pop();
                used[p-1] = true;
                car[curr] = p;
                ans += weight[curr-1] * rate[p-1];
            }
        }
    }cout << ans << endl;

    

}
#Verdict Execution timeMemoryGrader output
Fetching results...