제출 #252052

#제출 시각아이디문제언어결과실행 시간메모리
252052yuma220284Garage (IOI09_garage)C++14
100 / 100
3 ms384 KiB
#include "bits/stdc++.h"
using namespace std;

int main() {
	int N, M;
	cin >> N >> M;
	vector<int> R(N), W(M), NOW(M, -1);
	queue<int> Q;
	priority_queue<int, vector<int>, greater<int> > PQ;
	for (int i = 0; i < N; i++) cin >> R[i];
	for (int i = 0; i < M; i++) cin >> W[i];
	for (int i = 0; i < N; i++) {
		PQ.push(i);
	}
	int ANS = 0;
	for (int i = 0; i < M * 2; i++) {
		int X;
		cin >> X;
		if (X >= 0) {
			X--;
			if (PQ.empty()) {
				Q.push(X);
			}
			else {
				int Y = PQ.top();
				PQ.pop();
				ANS += R[Y] * W[X];
				NOW[X] = Y;
			}
		}
		else {
			X = -X;
			X--;
			if (Q.empty()) {
				PQ.push(NOW[X]);
				NOW[X] = -1;
			}
			else {
				NOW[Q.front()] = NOW[X];
				ANS += R[NOW[X]] * W[Q.front()];
				NOW[X] = -1;
				Q.pop();
			}
		}
	}
	cout << ANS << endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...