Cod sursa(job #2925342)

Utilizator whitevader28Albu Alexandru whitevader28 Data 14 octombrie 2022 19:25:28
Problema Heapuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>

#define N_MAX 200000

using namespace std;

vector<int> v, t;
vector<int>::iterator it;

int n, op, val;

ifstream fin("heapuri.in");
ofstream fout("heapuri.out");

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

int main()
{
    v.reserve(N_MAX);
    t.reserve(N_MAX);

    make_heap(v.begin(), v.end(), mini);

    fin >> n;

    for(int i = 0; i < n; i++)
    {
        fin >> op;
        if(op == 1)
        {
            fin >> val;
            v.push_back(val);
            t.push_back(val);
            push_heap(v.begin(), v.end(), mini);
        }
        else if(op == 2)
        {
            fin >> val;
            val--;
            it = find(v.begin(), v.end(), t.at(val));
            pop_heap(it, v.end(), mini);
            v.pop_back();
        }
        else
        {
            cout << v.front() << '\n';
        }
    }

    fin.close();
    fout.close();

    return 0;
}