Cod sursa(job #1925777)

Utilizator waren4Marius Radu waren4 Data 13 martie 2017 18:02:59
Problema Heapuri Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("heapuri.in"); ofstream g("heapuri.out");
int n,x,i,nn,pz,nr,c,j; int m[200001],a[200001];
int cautbin(int st, int dr)
{
    int mij;
    mij=1;
    while (st<=dr)
    {
        mij=(st+dr)/2;
        if (m[mij]==x) break;
        if (m[mij]>x) dr=mij-1;
        if (m[mij]<x) st=mij+1;
    }
    return mij;
}

int main()
{
    f>>n;
    for(i=1;i<=n;i++) m[i]=2000000000;
    nr=0;
    nn=0;
    for(i=1;i<=n;i++)
    {
        f>>c;
        if (c==1)
        {
            f>>x;
            pz=cautbin(1,nr);
            nn++;
            a[nn]=x;
            if (m[pz]<x)
                {
                    while (m[pz]<x) {pz++;}
                }
            nr++;
            for(j=nr;j>pz;j--) m[j]=m[j-1];
            m[pz]=x;
        }
        if (c==2)
        {
            f>>x;
            j=x;
            x=a[j];
            pz=cautbin(1,nr);
            for(j=pz;j<nr;j++) m[j]=m[j+1];
            m[nr]=2000000000;
            nr--;
        }
        if (c==3)
        {
            g<<m[1]<<'\n';
        }
    }
    return 0;
}