Cod sursa(job #2361138)

Utilizator Razvan85Secure Razvan Razvan85 Data 2 martie 2019 13:20:27
Problema Heapuri Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.44 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("heapuri.in");
ofstream g("heapuri.out");
vector <int> v,k;
int m,a,b,nr,poz,n,poz2,cop;
int main()
{
    f>>m;
    v.push_back(9999);
    for(int i=1;i<=m;i++)
    {
        f>>a;
        if(a!=3) f>>b;
        if(a==1)
        {
            k.push_back(b);
            v.push_back(b);
            poz=v.size()-1;
            if(v.size()>2)
            for(int j=v.size()-1;j>=2;j=j/2)
                if(v[j/2]<b)
                   {swap(v[j/2],v[poz]);poz=j/2;}
        }
        if(a==2)
        {
            poz2=0;
            for(int i=1;i<v.size()-1;i++)
                if(v[i]==k[b-1])
                {
                    cop=v[i];
                    v[i]=v[v.size()-1];
                    poz2=i;
                    b=v[i];
                    i=v.size()+1;
                }
            nr=0;
            v.pop_back();
            for(int j=v.size()-1;j>=2;j=j/2)
                if(v[j/2]<b)
                   {swap(v[j/2],v[poz]);poz=j/2;nr++;}
            if(nr==0&&poz2!=0)
              for(int j=poz2;j<=n;j=j*2)
                {if(v[j*2]>b)
                   {swap(v[j/2],v[poz]);poz=j*2;}
                else
                if(v[j*2+1]>b)
                   {swap(v[j/2],v[poz]);poz=j*2;}
                }
        }
        if(a==3)
            {g<<min(v[v.size()-1],v[v.size()-2])<<'\n';
           }
    }

    return 0;
}