Cod sursa(job #1615916)

Utilizator Vali_DeaconuVali Deaconu Vali_Deaconu Data 26 februarie 2016 22:52:14
Problema Heapuri Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
# include <fstream>
# include <algorithm>
using namespace std;
ifstream fin("heapuri.in");
ofstream fout("heapuri.out");

const int MAX_HEAP_SIZE = 200010;
int h[MAX_HEAP_SIZE];
int r[MAX_HEAP_SIZE];
int x, t, p;

bool comp(const int& a, const int& b) {
    return a > b;
}

int main() {
    make_heap(h+1, h+h[0]+1, comp);

    fin >> t;
    while (t--) {
        fin >> p;
        if (p == 1) {
            fin >> x;
            h[++h[0]] = r[++r[0]] = x;
            push_heap(h+1, h+h[0]+1, comp);

            continue;
        }

        if (p == 2) {
            int i;
            fin >> x;
            for (i=1; i<=h[0]; ++i)
                if (h[i] == r[x])
                    break;

            pop_heap(h+i, h+h[0]+1, comp);
            h[0]--;

            continue;
        }

        if (p == 3) {
            fout << h[1] << "\n";

            continue;
        }
    }

    fin.close();
    fout.close();
    return 0;
}