#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define pb push_back
const ll MOD = 1e9 + 7;
ll n, m, k, a, b, c, d, x, y;
int main() {
ios::sync_with_stdio(false);
cout.tie(0); cin.tie(0);
cin >> n >> m;
vector<ll> parking(n);
vector<ll> weights(m);
for(int j = 0; j<n; j++) cin >> parking[j];
for(int j = 0; j<m; j++) cin >> weights[j];
// sort(parking.begin(), parking.end());
ll tt = 2*m;
// int a = 0;
ll totalEarnings = 0;
queue<ll> carqueue;
vector<bool> occupied(n, false);
vector<ll> parked(m, -1);
// bool allOccupied = false;
while(tt--) {
ll inp; cin >> inp;
if(inp > 0) {
bool done = false;
for(int j = 0; j<n; j++) {
if(occupied[j] == false) {
occupied[j] = true;
totalEarnings += weights[inp-1] * parking[j];
parked[inp-1] = j+1;
done = true; break;
}
}
if(done == false) {
carqueue.push(inp);
}
}
else {
inp = abs(inp);
occupied[parked[inp-1]-1] = false;
if(!(carqueue.empty())) {
totalEarnings += parking[parked[inp-1]-1] * weights[carqueue.front()-1];
occupied[inp-1] = true;
carqueue.pop();
}
}
}
cout << totalEarnings;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |