Cod sursa(job #1512637)

Utilizator MayuriMayuri Mayuri Data 28 octombrie 2015 13:40:36
Problema Heapuri Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.25 kb
#include <cstdio>
#include <algorithm>
#include <vector>

using namespace std;

int n, H[200002];
vector <int> cron;

inline bool cmp(int a, int b) {
    return a > b;
}

void push(int a) {
    ++ n;
    H[n] = a;
    push_heap(H + 1, H + n + 1, cmp);
}

void extract_min() {
    //pop_heap(H + 1, H + n + 1, cmp);
    //-- n;
}

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

    int m, x, t;
    scanf("%d", &m);

    for(int i = 1; i <= m; ++ i) {
        scanf("%d", &t);
        if(t == 3) {
            printf("%d\n", H[1]);
           // extract_min();
        } else {
            scanf("%d", &x);
            if(t == 1) {
                push(x);
                cron.push_back(x);
            } else {
                -- x;
                int nr;
                nr = cron[x];
               // cron.erase(cron.begin() + x);
                for(int i = 1; i <= n; ++ i) {
                    if(H[i] == nr) {
                            swap(H[i], H[n]);
                        -- n;
                        make_heap(H + 1, H + n + 1, cmp);
                        break;
                    }
                }
            }
        }
    }

    return 0;
}