#include <iostream>
#include <queue>
using namespace std;
const int N = 1e5;
int r[N], w[N], carAt[N];
int main(){
int n, m, Ans = 0;
cin>>n>>m;
for (int i=1;i<=n;i++)
cin>>r[i];
for (int i=1;i<=m;i++)
cin>>w[i];
queue<int> Q;
for (int i=1, empty = n;i<=m + m;i++){
int cr;
cin>>cr;
if (cr < 0){
for (int i=1;i<=n;i++){
if (carAt[i] != -cr)
continue;
empty++;
carAt[i] = 0;
break;
}
}
else
Q.push(cr);
if (empty > 0 and Q.size() > 0){
int nxt = Q.front();
Q.pop();
for (int i=1;i<=n;i++){
if (carAt[i])
continue;
carAt[i] = nxt;
Ans += w[nxt] * r[i];
break;
}
empty--;
}
}
cout<<Ans<<'\n';
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |