Submission #879615

#TimeUsernameProblemLanguageResultExecution timeMemory
879615amin_2008Garage (IOI09_garage)C++17
100 / 100
1 ms604 KiB
/*    author: amin     */

#pragma GCC optimize ("O3")
#include <bits/stdc++.h>
#define ios ios_base::sync_with_stdio(0); \
            cin.tie(0); \
            cout.tie(0)
#define vi vector<int>v
#define vs vector<string>v
#define vc vector<char>v
#define ll long long
#define vl vector<ll>v
#define pb push_back
#define ins insert
#define ts to_string
#define st stoi
#define ull unsigned long long
#define endl '\n'

using namespace std;

int p[101], w[2001];
set<int> s;
map<int,int> mp;
deque<int> d;

const int MOD = 1e9 + 7;

void solve()
{
    int n, m;
    cin >> n >> m;
    for(int i = 1; i <= n; i++)
        s.ins(i);
    for(int i = 1; i <= n; i++)
        cin >> p[i];
    for(int i = 1; i <= m; i++)
        cin >> w[i];
    int res = 0;
    for(int i = 1; i <= 2 * m; i++) {
        int car;
        cin >> car;
        if (car > 0) {
            if (!s.empty()) {
                int pp = *s.begin();
                res += w[car] * p[pp];
                s.erase(s.begin());
                mp[car] = pp;
            }
            else {
                d.push_back(car);
            }
        }
        else {
            int pp = mp[-car];
            if (!d.empty()) {
                int pc = d[0];
                res += w[pc] * p[pp];
                mp[pc] = pp;
                d.pop_front();
            }
            else {
                s.ins(pp);
            }
        }
    }
    cout << res << endl;
}


int main ()
{
    ios;
    int t;
    //cin >> t;
    t = 1;
    while(t--){
        solve();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...