Cod sursa(job #1476413)

Utilizator salam1Florin Salam salam1 Data 25 august 2015 07:31:33
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>
using namespace std;
const int NMAX = 200505;
int ops, A[NMAX], r;
auto comp = [] (const int& x, const int& y) -> bool {
  return A[x] > A[y];
};
priority_queue<int, vector<int>, decltype(comp)> Q(comp);
bool erased[NMAX];

void solve() {
  scanf("%d", &ops);
  int type, x;
  while (ops--) {
    scanf("%d", &type);
    switch (type) {
      case 1: {
        scanf("%d", &x);
        A[++r] = x;
        Q.push(r);
        break;
      }
      case 2: {
        scanf("%d", &x);
        erased[x] = true;
        break;
      }
      case 3: {
        while (!Q.empty() && erased[Q.top()]) Q.pop();
        printf("%d\n", A[Q.top()]);
        break;
      }
    }
  }
}

int main() {
  freopen("heapuri.in", "r", stdin);
  freopen("heapuri.out", "w", stdout);
  
  solve();
  return 0;
}