Cod sursa(job #755530)

Utilizator visanrVisan Radu visanr Data 6 iunie 2012 09:03:02
Problema Heapuri Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <queue>
using namespace std;

#define mp make_pair
#define nmax 200010

int n;
priority_queue< pair<int, int>, vector<pair<int, int> >, greater< pair<int, int> > > heap;
bool deleted[nmax];

int main()
{
    freopen("heapuri.in", "r", stdin);
    freopen("heapuri.out", "w", stdout);
    int i, counter = 0;
    scanf("%i", &n);
    for(i = 1; i <= n; i++)
    {
          int op;
          scanf("%i", &op);
          if(op == 1)
          {
                int val;
                scanf("%i", &val);
                heap.push(mp(val, ++counter));
          }
          if(op == 2)
          {
                int pos;
                scanf("%i", &pos);
                deleted[pos] = true;
          }
          if(op == 3)
          {
                while(deleted[heap.top().second]) heap.pop();
                printf("%i\n", heap.top().first);
          }
    }
    scanf("%i", &i);
    return 0;
}