Submission #313374

#TimeUsernameProblemLanguageResultExecution timeMemory
313374fergonzgut21Garage (IOI09_garage)C++14
100 / 100
4 ms384 KiB
#include <iostream>
#include <queue>
#define MAX 105
#define MAX2 2005
using namespace std;

int N, M, A[MAX], res, B[MAX2], a, num, C[MAX2];
priority_queue <int> qiu;
queue <int> qiu2;

int main()
{
    cin >> N >> M;
    for (int i = 1; i <= N; i++)
    {
        cin >> A[i];
        qiu.push(i * -1);
    }
    for (int i = 1; i <= M; i++)
        cin >> B[i];
    for (int i = 1; i <= M * 2; i++)
    {
        cin >> a;
        if (a > 0)
        {
            if (qiu.empty())
                qiu2.push(a);
            else
            {
                C[a] = qiu.top() * -1;
                res += A[qiu.top() * -1] * B[a];
                qiu.pop();
            }
        }
        else
        {
            qiu.push(C[a * -1] * -1);
            if (!qiu2.empty())
            {
                a = qiu2.front();
                qiu2.pop();
                C[a] = qiu.top() * -1;
                res += A[qiu.top() * -1] * B[a];
                qiu.pop();
            }
        }
    }
    cout << res;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...