Cod sursa(job #1491179)

Utilizator bghimisFMI Ghimis Bogdan bghimis Data 24 septembrie 2015 21:38:21
Problema Heapuri Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <algorithm>
#include <queue>
#include <vector>
#include <unordered_map>
using namespace std;

int v[200000];
unordered_map <int, int> my_hash;
priority_queue <int, vector<int>, greater<int> > my_heap;

int main(int argc, char *argv[]) {
  freopen ("heapuri.in", "r", stdin);
  freopen ("heapuri.out", "w", stdout);
  
  int n;
  cin >> n;

  int i, crt = 0;
  for (i = 0 ; i < n; ++i) {
    int op;
    cin >> op;

    if (op == 1) {
      int val;
      cin >> val;

      v[crt++] = val;
      my_heap.push(val);
    } else if (op == 2) {
      int val;
      cin >> val;
      
      my_hash[v[val - 1]] = 1;
    } else if (op == 3) {
      while (my_hash[my_heap.top()] > 0) {
	my_hash[my_heap.top()] = 0;
	my_heap.pop();
      }

      cout << my_heap.top() << "\n";
    }
  }
  
  return 0;
}