Cod sursa(job #2223039)

Utilizator Nazarick24Andrei Ionescu Nazarick24 Data 18 iulie 2018 22:29:12
Problema Heapuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.44 kb
#include <iostream>
#include <algorithm>
#include <stdio.h>
using namespace std;
int contor=0;
struct elem
{
    int nr;
    int ordine=0;
};
elem v[1000];
void heap(elem v[],int p)
{
    elem aux;
    while(p!=0 && v[p].nr<v[p/2].nr)
    {


        aux=v[p];
        v[p]=v[p/2];
        v[p/2]=aux;

        p=p/2;
    }

}
void eliminatorul (elem v[],int p)
{
    if(p<contor)
    {


    if(v[2*p].nr>v[(2*p)+1].nr)
    {
        v[p]=v[2*p];
        p=2*p;
    }
    else
        v[p]=v[(2*p)+1];
    p=(2*p)+1;
}
}

int main()
{
    freopen("heapuri.in","r",stdin);
    freopen("heapuri.out","w",stdout);

    int n,num=1,j,minim,i;
    cin>>n;
    int cod;
    int x;

    for(i=0; i<n; i++)
    {
        cin>>cod;
        if(cod!=3)
        {
            cin>>x;
            if(cod==1)

            {
                v[contor].nr=x;
                v[contor].ordine=num;
                num++;
                contor++;
                heap(v,contor);

            }
            if(cod==2)
            {int q=1;
                j=0;
                while(j<contor && q!=0)
                {
                    if(x==v[j].ordine)
                    {
                        q=0;
                        eliminatorul(v,j);
                    }
                }
            }

        }


        else
        {


            cout<<v[0].nr<<'/n';
        }

    }

}