Cod sursa(job #3163532)

Utilizator AlexandruDrg23Draghici Alexandru AlexandruDrg23 Data 31 octombrie 2023 16:11:17
Problema Heapuri Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.9 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int n[200],ord[200003];
int op,arg,n1,ina=0;
char s[20];

int main()
{
    fin>>n1;
    fin.getline(s,200);
    for(int k=1;k<=n1;k++)
    {
        fin.getline(s,20);
        arg=0;
        op=2;
        while(s[op]!='\000')
        {
            arg=arg*10+s[op]-'0';
            op++;
        }
        op=s[0]-'0';
        if(op==1)
        {
            ord[++ord[0]]=arg;
            n[++ina]=arg;
            int poz=ina;
            while(poz/2>0 && n[poz/2]>n[poz])
            {
                swap(n[poz],n[poz/2]);
                poz=poz/2;
            }
        }
        else if(op==2)
        {
            int poz=1;
            for(poz=1;poz<=ina;poz++)
            {
                if(n[poz]==ord[arg])
                {
                    while(poz<=ina)
                    {
                        if(poz*2>ina)
                        {
                            n[poz]=0;
                            break;
                        }
                        if(poz*2+1>ina)
                        {
                            swap(n[poz],n[poz*2]);
                            n[poz*2]=0;
                            break;
                        }
                        if(n[poz*2]<n[poz*2+1])
                        {
                            swap(n[poz],n[poz*2]);
                            poz=poz*2;
                        }
                        else
                        {
                            swap(n[poz],n[poz*2+1]);
                            poz=poz*2+1;
                        }
                    }
                    break;
                }
            }
            ina--;
        }
        else
        {
            fout<<n[1]<<'\n';
        }
    }
    return 0;
}