#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m; cin >> n >> m;
int rates[n],weights[m+1],events[m*2],occupies[m+1],ans=0;
deque<int> waiting;
priority_queue<int, vector<int>, greater<int>> space_av;
for(int i=0; i<n; i++){
cin >> rates[i];
space_av.push(i);
}
for(int i=1; i<=m; i++){
cin >> weights[i];
occupies[i] = -1;
}
for(int i=0; i<m*2; i++) cin >> events[i];
for(auto event : events){
if(event>0){
if(!space_av.empty()){
occupies[event] = space_av.top();
space_av.pop();
ans+=weights[event]*rates[occupies[event]];
}else waiting.push_back(event);
}else{
space_av.push(occupies[-event]);
occupies[-event] = -1;
if(!waiting.empty()){
occupies[waiting.front()] = space_av.top();
space_av.pop();
ans+=weights[waiting.front()]*rates[occupies[waiting.front()]];
waiting.pop_front();
}
}
}
cout << ans << '\n';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |