Cod sursa(job #2544735)

Utilizator RedPipperNastasa Stefan-Alexandru RedPipper Data 12 februarie 2020 13:57:31
Problema Heapuri Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>

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

int n, heap[100000], cronos[100000],vf;

void addElem(int Arr[])
{
    int x;
    fin>>x;
    cronos[++vf] = x;
    Arr[++Arr[0]] = x;
    int poz = Arr[0];
    while(poz>1 && Arr[poz]<Arr[poz/2])
    {
        swap(Arr[poz],Arr[poz/2]);
        poz/=2;
    }

}

void delElem(int Arr[])
{
    int x;
    fin>>x;
    int elem = cronos[x];
    int pozz;

    for(int i=1;i<=Arr[0];++i)
        if(Arr[i]==elem)
        {
            pozz=i;
            break;
        }
    for(int i=pozz;i<Arr[0];++i)
    {
        Arr[i]=Arr[i+1];
    }
    --Arr[0];
    int poz = Arr[0];
    while(poz>1 && Arr[poz]<Arr[poz/2])
    {
        swap(Arr[poz],Arr[poz/2]);
        poz/=2;
    }
}


int main()
{
    fin>>n;
    while(n--)
    {
        int op;
        fin>>op;
        if(op==1)
        {
            addElem(heap);
        }
        else if(op==2)
        {
            delElem(heap);
        }
        else
        {
            fout<<heap[1]<<endl;

        }
    }

    return 0;
}