#include <bits/stdc++.h>
using namespace std;
#define ll long long int
int main(){
int n, m;
cin >> n >> m;
vector<int> r(n);
for(auto &i: r) cin >> i;
vector<int> w(m);
for(auto &i: w) cin >> i;
ll tt = 0;
map<int, int> mp;
set<int> st;
queue<int> q;
for(int i = 1; i <= n; i++)
st.insert(i);
for(int i = 0; i < 2*m; i++){
int e; cin >> e;
if(e > 0){
auto it = st.begin();
if(it == st.end()) q.push(e);
else{
mp[e] = *it;
st.erase(it);
}
}else{
tt += w[-e-1]*r[mp[-e]-1];
st.insert(mp[-e]);
if(!q.empty()){
int ne = q.front();
q.pop();
auto it = st.begin();
mp[ne] = *it;
st.erase(it);
}
}
}
cout << tt << endl;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |