Submission #1224192

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

#define ll long long int

int main(){

  int n, m;
  cin >> n >> m;

  vector<int> r(n);
  for(auto &i: r) cin >> i;

  vector<int> w(m);
  for(auto &i: w) cin >> i;

  ll tt = 0;

  map<int, int> mp;
  set<int> st;
  queue<int> q;

  for(int i = 1; i <= n; i++)
    st.insert(i);

  for(int i = 0; i < 2*m; i++){
    int e; cin >> e;
    if(e > 0){

      auto it = st.begin();

      if(it == st.end()) q.push(e);
      else{
        mp[e] = *it;
        st.erase(it);
      }

    }else{

      tt += w[-e-1]*r[mp[-e]-1];
      st.insert(mp[-e]);

      if(!q.empty()){
        int ne = q.front();
        q.pop();
        auto it = st.begin();
        mp[ne] = *it;
        st.erase(it);
      }

    }

  }

  cout << tt << endl;

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