Submission #1188729

#TimeUsernameProblemLanguageResultExecution timeMemory
1188729petezaGarage (IOI09_garage)C++20
100 / 100
1 ms328 KiB
#include <bits/stdc++.h>
using namespace std;

int n, m, x;
int rt[105];
int cw[2005];
int oc[105];
queue<int> q;
int money=0;

int main() {
	cin >> n >> m;
	for(int i=1;i<=n;i++) cin >> rt[i];
	for(int i=1;i<=m;i++) cin >> cw[i];
	memset(oc, -1, sizeof oc);
	for(int i=1;i<=2*m;i++) {
		cin >> x;
		if(x<0) {
			x=-x;
			int idx=1; for(;oc[idx]!=x;idx++);
			oc[idx] = -1;
			if(!q.empty()) {
				money += cw[q.front()] * rt[idx];
				oc[idx] = q.front();
				q.pop();
			}
		} else {
			int idx = 1; for(;oc[idx]!=-1&&idx<=n;idx++);
			if(idx <= n) {
				money += cw[x]*rt[idx];
				oc[idx] = x;
			}
			else q.push(x);
		}
		//cout << money << '\n';
	}
	cout << money;
}
#Verdict Execution timeMemoryGrader output
Fetching results...