제출 #228589

#제출 시각아이디문제언어결과실행 시간메모리
228589s_avila_gGarage (IOI09_garage)C++14
5 / 100
6 ms512 KiB
#include <bits/stdc++.h>
using namespace std;
queue<long long > col;
map<long long ,long long > mp;

int main(){
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    long long  n,m;
    cin>>n>>m;
    vector<long long > parks(n+1);
    vector<long long > cars(n+1);
    for(long long  i = 1 ; i <= n; i++)cin>>parks[i];
    for(long long  i = 1 ; i <= m; i++)cin>>cars[i];
    long long  vis[n+1];
    memset(vis,0,sizeof vis);
    long long  ans = 0;
    for(long long  i = 0 ; i < (2*m); i++){
        long long  x;
        cin>>x;
        bool libre = false;
        if(x > 0){
            long long  pos;
            for(long long  j = 1; j <= n; j++){
                if(vis[j] == 0){
                    libre = true;
                    pos = j;
                    break;
                }
            }
            if(!libre){
                col.push(x);
            }else{
                mp[x] = pos;
                ans += cars[x] * parks[pos];
                vis[pos] = 1;
            }
        }else{
            vis[mp[abs(x)]] = 0;
            if(!col.empty()){
                long long nxt = col.front();
                vis[mp[abs(x)]] = 1;
                mp[nxt] = mp[abs(x)];
                col.pop();
                ans += cars[nxt] * parks[mp[abs(x)]];
            }
            mp[abs(x)] = -1;
        }
    }
    cout<<ans<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...