Submission #943340

#TimeUsernameProblemLanguageResultExecution timeMemory
943340maxFedorchukGarage (IOI09_garage)C++17
100 / 100
2 ms4560 KiB
#include <bits/stdc++.h>
using namespace std;

const long long MX=2e5+10;

long long msq[MX],w[MX],cs[MX],ans=0;

int main()
{
    cin.tie(0);
    ios_base::sync_with_stdio(0);

    priority_queue < pair < long long , long long > , vector < pair < long long , long long > > , greater < pair < long long , long long > > > qp;

    long long n,m;
    cin>>n>>m;

    for(long long i=1;i<=n;i++)
    {
        cin>>cs[i];
        qp.push({i,cs[i]});
    }

    for(long long i=1;i<=m;i++)
    {
        cin>>w[i];
    }

    queue < long long > qm;
    for(long long i=1;i<=2*m;i++)
    {
        long long a;
        cin>>a;

        if(a>0)
        {
            qm.push(a);
        }
        else
        {
            a=(-a);
            qp.push({msq[a],cs[msq[a]]});
            msq[a]=0;
        }

        while(!qp.empty() && !qm.empty())
        {
            long long o1=qp.top().first;
            qp.pop();

            long long o2=qm.front();
            qm.pop();
          
            ans+=w[o2]*cs[o1];
            msq[o2]=o1;
        }
    }

    cout<<ans<<"\n";
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...