#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<int> R(n);
for (int i = 0; i < n; ++i) {
cin >> R[i];
}
vector<int> W(m);
for (int i = 0; i < m; ++i) {
cin >> W[i];
}
queue<int> carsWaiting;
vector<int> carIsIn(m + 1, -1);
priority_queue<int, vector<int>, greater<int>> lotsAvailable;
for (int i = 1; i <= n; ++i) {
lotsAvailable.push(i);
}
m *= 2;
int val;
long long revenue = 0;
while (m--) {
cin >> val;
if (val > 0) {
carsWaiting.push(val);
} else {
lotsAvailable.push(carIsIn[-val]);
carIsIn[-val] = -1;
}
while (!carsWaiting.empty() && !lotsAvailable.empty()) {
int car = carsWaiting.front();
int lot = lotsAvailable.top();
carsWaiting.pop();
lotsAvailable.pop();
carIsIn[car] = lot;
revenue += R[lot - 1] * W[car - 1];
}
}
cout << revenue << endl;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |