Submission #1291054

#TimeUsernameProblemLanguageResultExecution timeMemory
1291054Jawad_Akbar_JJGarage (IOI09_garage)C++20
100 / 100
2 ms576 KiB
#include <iostream>
#include <queue>

using namespace std;
const int N = 1e5;
int r[N], w[N], carAt[N];

int main(){
	int n, m, Ans = 0;
	cin>>n>>m;

	for (int i=1;i<=n;i++)
		cin>>r[i];

	for (int i=1;i<=m;i++)
		cin>>w[i];

	queue<int> Q;
	for (int i=1, empty = n;i<=m + m;i++){
		int cr;
		cin>>cr;

		if (cr < 0){
			for (int i=1;i<=n;i++){
				if (carAt[i] != -cr)
					continue;
				empty++;
				carAt[i] = 0;
				break;
			}
		}
		else
			Q.push(cr);

		if (empty > 0 and Q.size() > 0){
			int nxt = Q.front();
			Q.pop();
			for (int i=1;i<=n;i++){
				if (carAt[i])
					continue;
				carAt[i] = nxt;
				Ans += w[nxt] * r[i];
				break;
			}
			empty--;
		}
	}
	cout<<Ans<<'\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...