Submission #228447

#TimeUsernameProblemLanguageResultExecution timeMemory
228447s_avila_gGarage (IOI09_garage)C++14
5 / 100
9 ms640 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);
    vector<long long> cars(n);
    for(long long i = 0 ; i < n; i++)cin>>parks[i];
    for(long long i = 0 ; i < m; i++)cin>>cars[i];
    long long vis[n];
    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 = 0; j < n; j++){
                if(vis[j] == 0){
                    libre = true;
                    pos = j;
                    break;
                }
            }
            if(!libre){
                col.push(x);
            }else{
                mp[x] = pos;
                ans += cars[x-1] * parks[pos];
                vis[pos] = 1;
            }
        }else{
            vis[mp[abs(x)]] = 0;
            if(!col.empty()){
                long long nxt = col.front();
                vis[mp[abs(x)]] = 1;
                col.pop();
                ans += cars[nxt-1] * parks[mp[abs(x)]];
            }
            mp[abs(x)] = -1;
        }
    }
    cout<<ans<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...