#include <bits/stdc++.h>
using namespace std;
const int sz = 105;
int n, m;
signed main(){
cin >> n >> m;
vector<int> rate(n);
vector<int> weight(m);
vector<int> car(m + 1, 0);
vector<bool> used(n, false);
for(int i = 0; i < n; i++){
cin >> rate[i];
}for(int i = 0; i < m; i++){
cin >> weight[i];
}queue<int> wait;
int ans = 0;
for(int i = 0; i < 2*m; i++){
int x;
cin >> x;
if(x > 0){
bool ok=false;
for(int i = 0; i < n; i++){
if(!used[i]){
car[x] = i+1;
ok=true;
used[i] = true;
ans += weight[x-1] * rate[i];
break;
}
}if(!ok){
wait.push(x);
}
}else {
int id = -x;
int p = car[id];
used[p-1] = false;
car[id] = 0;
if(!wait.empty()){
int curr = wait.front();
wait.pop();
used[p-1] = true;
car[curr] = p;
ans += weight[curr-1] * rate[p-1];
}
}
}cout << ans << endl;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |