Cod sursa(job #2210886)

Utilizator dropsdrop source drops Data 8 iunie 2018 15:15:29
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <unordered_map>
#include <set>
#include <queue>
#include <algorithm>
#include <map>
#include <vector>
#include <string>
using namespace std;

class MyHeap {
 public:
   MyHeap() : idx_count(0) {}
   void push(int x) {
     idx_count++;
     idx[idx_count] = x;
     hp.insert(x);
   }
   int top() {
     return *hp.begin();
   }
   void pop(int x) {
     hp.erase(hp.find(idx[x]));
   }

 private:
   multiset<int> hp;
   unordered_map<int, int> idx;
   int idx_count;
};

int main() {
  freopen("heapuri.in","r",stdin);
  freopen("heapuri.out","w",stdout);
  int n, op, x;
  MyHeap hp;
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) {
    scanf("%d", &op);
    switch(op) {
      case 1: scanf("%d", &x); hp.push(x); break;
      case 2: scanf("%d", &x); hp.pop(x); break;
      case 3: printf("%d\n", hp.top()); 
    }
  }

  return 0;
}