#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fs first
#define sc second
#define pb push_back
#define rep(i,a,b) for(int i=a; i<=b; i++)
const int N=2000005;
int t[2005],w[2005],a[200];
signed main(){
int n,m;
cin>>n>>m;
rep(i,1,n){
cin>>a[i];
}
rep(i,1,m){
cin>>w[i];
}
rep(i,1,2*m){
cin>>t[i];
}
vector<int> fre(n+1);
map<int,int> pos;
queue<int> q;
int ans=0;
for(int i=1;i<=2*m;i++){
if(t[i]<0){
int car=-t[i];
int p=pos[car];
fre[p]=0;
if(!q.empty()){
int newcar=q.front();q.pop();
fre[p]=1;
pos[newcar]=p;
ans+=a[p]*w[newcar];
}
}else{
int car=t[i];
bool placed=false;
for(int j=1;j<=n;j++){
if(fre[j]==0){
fre[j]=1;
pos[car]=j;
ans+=a[j]*w[car];
placed=true;
break;
}
}
if(!placed){
q.push(car);
}
}
}
cout<<ans<<endl;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |