Cod sursa(job #2153644)

Utilizator cezinatorCezar D cezinator Data 6 martie 2018 13:15:27
Problema Heapuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>

using namespace std;
ifstream fin("heapuri.in");
ofstream fout("heapuri.out");
int n,x,cod,v[200005],poz=0,stj=0,inserat[200005],it=1;
int parent (int poz)
{
    if(poz%2==0) return poz/2-1;
    else return poz/2;
}
int gaseste (int x)
{
    for(int i=0;i<stj; i++)
    {
        if(inserat[x]==v[i]) return i;
    }
    return 0;
}
void elimina(int x)
{
    poz=gaseste(x);
    swap(v[poz],v[stj]);
    v[stj]=0; stj--;
}
void top()
{
    fout<<v[0]<<'\n';
}
void insereaza(int x)
{
    inserat[it]=x;
    v[stj]=x;
    poz=stj;
    while(x<v[parent(poz)])
    {
        swap(v[poz],v[parent(poz)]);
        poz=parent(poz);
        if(poz==0) break;
    }

    stj++;it++;
}
int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)
    {
        fin>>cod;
        if(cod==1)
        {
            fin>>x; insereaza(x);
        }
        else if (cod==2)
        {
            fin>>x; elimina(x);
        }
        else
        {
            top();
        }
    }
    return 0;
}