Cod sursa(job #2210885)

Utilizator dropsdrop source drops Data 8 iunie 2018 15:14:00
Problema Heapuri Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 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;
  cin >> n;
  for (int i = 0; i < n; ++i) {
    cin >> op;
    switch(op) {
      case 1: cin >> x; hp.push(x); break;
      case 2: cin >> x; hp.pop(x); break;
      case 3: cout << hp.top() << endl; 
    }
  }

  return 0;
}