Submission #518592

#TimeUsernameProblemLanguageResultExecution timeMemory
518592blueGarage (IOI09_garage)C++17
100 / 100
3 ms332 KiB
#include <iostream>
#include <set>
#include <queue>
using namespace std;

int main()
{
    int N, M;
    cin >> N >> M;
    
    int R[N+1];
    for(int i = 1; i <= N; i++) cin >> R[i];
    
    int W[M+1];
    for(int i = 1; i <= M; i++) cin >> W[i];
    
    queue<int> Q;
    set<int> S;
    for(int i = 1; i <= N; i++) S.insert(i);
    
    int res = 0;
    int a;
    
    int P[M+1];
    
    for(int i = 1; i <= 2*M; i++)
    {
        cin >> a;
        if(a > 0) Q.push(a);
        else S.insert(P[-1*a]);
        
        while(!Q.empty() && !S.empty())
        {
            P[Q.front()] = *S.begin();
            res += W[Q.front()] * R[*S.begin()];
            S.erase(*S.begin());
            Q.pop();
        }
    }
    cout << res << '\n';
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...