Cod sursa(job #3161287)

Utilizator Alex_BerbescuBerbescu Alexandru Alex_Berbescu Data 26 octombrie 2023 15:32:26
Problema Heapuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.27 kb
#pragma GCC optimize("O3")
#pragma GCC optimize("fast-math")
#pragma GCC optimize("unroll-loops")
#include<bits/stdc++.h>
using namespace std;
int n, op, x, t;
struct point
{
    int val, idx;
    bool operator <(const point &ob)const
    {
        return val > ob.val;
    }
};
priority_queue<point>pq;
bitset<200005>viz;
ifstream fin("heapuri.in");
ofstream fout("heapuri.out");
int32_t main(int argc, char * argv[])
{
    fin >> n;
    int ok = 0;
    for(int i = 1; i <= n; ++i)
    {
        fin >> op;
        if(op == 1)
        {
            fin >> x;
            pq.push({x, t++});
        }
        else
        {
            if(op == 2)
            {
                fin >> x;
                viz[x] = 1;
            }
            else
            {
                ok = 0;
                while(ok == 0)
                {
                    point vf = pq.top();
                    if(viz[vf.idx] == 1)
                    {
                        pq.pop();
                    }
                    else
                    {
                        ok = 1;
                        fout << vf.val << '\n';
                        break;
                    }
                }
            }
        }
    }
    return 0;
}