Cod sursa(job #3284990)

Utilizator Codrut_NeagNeag Codrut Serban Codrut_Neag Data 12 martie 2025 13:44:17
Problema Heapuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

int nr, v[200001], poz[200001];

void prelocare(int x)
{
    if(v[x]<v[x/2])
    {
        swap(v[x], v[x/2]);
        poz[nr]=poz[x/2];
        poz[x/2]=x;
        prelocare(x/2);
    }
}

void stergere(int p)
{
    if(v[p]!=0)
    {
        v[p]=0;
        if(v[p*2]<v[p*2+1]||v[p*2+1]==0)
        {
            v[p]=v[p*2];
            stergere(p*2);
        }
        else if(p*2+1<=nr)
        {
            v[p]=v[p*2+1];
            stergere(p*2+1);
        }
    }
}

int main()
{
    int n, op, x;
    in>>n;
    for(int i=1; i<=n; i++)
    {
        in>>op;
        if(op==1)
        {
            in>>x;
            v[++nr]=x;
            poz[nr]=nr;
            prelocare(nr);
        }
        else if(op==2)
        {
            in>>x;
            stergere(poz[x]);
        }
        else out<<v[1]<<'\n';
    }
    return 0;
}