Cod sursa(job #1491180)

Utilizator bghimisFMI Ghimis Bogdan bghimis Data 24 septembrie 2015 21:40:12
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#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[]) {
  ifstream cin ("heapuri.in");
  ofstream cout("heapuri.out");
  
  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]]++;
    } else if (op == 3) {
      while (my_hash[my_heap.top()] > 0) {
	my_hash[my_heap.top()]--;
	my_heap.pop();
      }

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

  cin. close();
  cout.close();
  return 0;
}