Submission #971469

#TimeUsernameProblemLanguageResultExecution timeMemory
97146912345678Garage (IOI09_garage)C++17
100 / 100
1 ms604 KiB
#include <bits/stdc++.h>

using namespace std;

const int nx=2e3+5;

int n, m, w[nx], s[nx], x, l[nx], res;
priority_queue<int, vector<int>, greater<int>> pq;
queue<int> q;

int main()
{
    cin.tie(NULL)->sync_with_stdio(false);
    cin>>n>>m;
    for (int i=1; i<=n; i++) cin>>s[i], pq.push(i);
    for (int i=1; i<=m; i++) cin>>w[i];
    for (int i=1; i<=2*m; i++)
    {
        cin>>x;
        if (x<0) pq.push(l[-x]);
        else
        {
            if (!pq.empty())
            {
                l[x]=pq.top();
                pq.pop();
                res+=s[l[x]]*w[x];
            }
            else q.push(x);
        }
        while (!pq.empty()&&!q.empty())
        {
            auto t=pq.top();
            pq.pop();
            res+=s[t]*w[q.front()];
            l[q.front()]=t;
            q.pop();
        }
    }
    cout<<res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...