Submission #474088

#TimeUsernameProblemLanguageResultExecution timeMemory
474088ValiAntonieGarage (IOI09_garage)C++14
100 / 100
2 ms332 KiB
#include <bits/stdc++.h>

using namespace std;

int n,mr,i,x,m[2001],j,ok,indice;
queue <int> Q;
long long suma;
pair<int,int> v[101];

int main()
{
    cin>>n>>mr;
    for(i=1;i<=n;i++)
        cin>>v[i].first;
    for(i=1;i<=mr;i++)
        cin>>m[i];
    for(i=1;i<=2*mr;i++){
        cin>>x;
        if(x > 0){
            ok = 0;
            for(j=1;j<=n;j++){
                if(!v[j].second){
                    suma += 1LL * m[x] * v[j].first;
                    v[j].second = x;
                    ok = 1;
                    break;
                }
            }
            if(!ok)
                Q.push(x);
        }
        else{
            indice = 0;
            for(j=1;j<=n;j++){
                if(v[j].second == -x){
                    indice = j;
                    v[j].second = 0;
                    break;
                }
            }
            if(Q.empty()==false){
                suma += 1LL * m[Q.front()] * v[indice].first;
                v[indice].second = Q.front();
                Q.pop();
            }
        }
    }
    cout << suma;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...