Cod sursa(job #2371545)

Utilizator maria_sinteaMaria Sintea maria_sintea Data 6 martie 2019 18:15:10
Problema Heapuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <cstdio>
#include <bitset>
#include <queue>
#define N 200005
using namespace std;

int n, op, nr, a[N];
struct cmp
{
    bool operator()(int a, int b)
    {
        return a>b;
    }
};
priority_queue <int, vector<int>, cmp> heap;
bitset <1000000005> del;

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

    scanf("%d\n", &n);
    for(int i=0;i<n;i++)
    {
        scanf("%d ", &op);
        if(op==1)
        {
            scanf("%d\n", &nr);
            a[++a[0]]=nr;
            heap.push(nr);
        }
        else
            if(op==2)
            {
                scanf("%d\n", &nr);
                del[a[nr]]=1;
            }
        else
        {
            while(del[heap.top()])
            {
                del[heap.top()]=0;
                heap.pop();
            }
            printf("%d\n", heap.top());
        }
    }
    return 0;
}