#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;
void solve() {
cin >> n;
vector<int> arr(n);
for(int j = 0; j<n; j++) {
cin >> arr[j];
}
}
int main() {
ios::sync_with_stdio(false);
cout.tie(0); cin.tie(0);
cin >> n >> m;
vector<int> parking(n);
vector<int> 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());
int tt = 2*m;
int a = 0;
ll totalEarnings = 0;
queue<int> carqueue;
vector<bool> occupied(n, false);
vector<int> parked(m, -1);
// bool allOccupied = false;
while(tt--) {
int 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();
}
}
if(!(carqueue.empty())) cout << carqueue.front() << " " << carqueue.size() << " ";
// cout << totalEarnings << "\n";
}
cout << totalEarnings;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |