Submission #1080760

#TimeUsernameProblemLanguageResultExecution timeMemory
1080760juicyGarage (IOI09_garage)C++17
100 / 100
1 ms348 KiB
#include <bits/stdc++.h>

using namespace std;

#ifdef LOCAL
#include "debug.h"
#else
#define debug(...) 42
#endif

int main() {
  ios::sync_with_stdio(false); cin.tie(nullptr);

  int n, m; cin >> n >> m;
  vector<int> a(n), b(m);
  for (int i = 0; i < n; ++i) {
	cin >> a[i];
  }
  for (int i = 0; i < m; ++i) {
	cin >> b[i];
  }
  priority_queue<int> pq;
  for (int i = 0; i < n; ++i) {
	pq.push(-i);
  }
  vector<int> vis(n), pos(m);
  queue<int> q;
  int res = 0;
  for (int i = 0; i < 2 * m; ++i) {
	int x; cin >> x;
	if (x > 0) {
		q.push(x - 1);
	} else {
		int p = pos[-1 - x];
		vis[p] ^= 1;
		pq.push(-p);
	}
	while (q.size()) {
		while (pq.size() && vis[-pq.top()]) {
			pq.pop();
		}
		if (!pq.size()) {
			break;
		}
		int u = q.front(); q.pop();
		int j = -pq.top(); pq.pop();
		res += a[j] * b[u];
		pos[u] = j;
		vis[j] ^= 1;
	}
  }
  cout << res;
  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...