Submission #1002837

#TimeUsernameProblemLanguageResultExecution timeMemory
1002837TobGarage (IOI09_garage)C++14
100 / 100
1 ms452 KiB
#include <bits/stdc++.h>

#define ll long long
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define pb push_back
#define FIO ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0)

using namespace std;

typedef pair <ll, ll> pii;

int n, m;
int r[107], wh[2007], w[2007];

int main () {
	FIO;
	cin >> n >> m;
	
	deque <int> q;
	
	set <int> s;
	for (int i = 1; i <= n; i++) {
		cin >> r[i];
		s.insert(i);
	}
	
	for (int i = 1; i <= m; i++) {
		cin >> w[i];
	}
	
	int res = 0;
	for (int i = 1; i <= 2*m; i++) {
		int x; cin >> x;
		if (x > 0) {
			if (s.empty()) q.pb(x);
			else {
				int y = *s.begin();
				s.erase(y);
				res += w[x] * r[y];
				wh[x] = y;
			}
		}
		else {
			int y = wh[-x];
			s.insert(y);
			if (!q.empty()) {
				x = q.front();
				s.erase(y);
				res += w[x] * r[y];
				wh[x] = y;
				q.pop_front();
			}
		}
	}
	
	cout << res;

	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...