Cod sursa(job #1296303)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 20 decembrie 2014 20:33:25
Problema Heapuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#define dim 200003
using namespace std;

ifstream fin("heapuri.in");
ofstream fout("heapuri.out");
int v[4*dim],n,i,o,k,x,poz[4*dim],j;
void insereaza(int x){
    v[++k]=x;poz[k]=k;
    int p=k/2,c=k;
    while(p>=1 && v[p]>v[c]){
        swap(v[c],v[p]);
        swap(poz[c],poz[p]);
        c=p;
        p/=2;
    }
}
void sterge(int x){
    v[x]=v[k];
    k--;
    int p=x,c=2*p;
    while(p>=1 && v[p]>v[c]){
        swap(v[c],v[p]);
        swap(poz[c],poz[p]);
        c=p;
        p/=2;
    }
}
int main(){
    fin>>n;
    for(i=1;i<=n;i++){
        fin>>o;
        if(o==1){
            fin>>x;
            insereaza(x);
        }
        if(o==2){
            fin>>x;
            for(j=1;j<=k;j++){
                if(poz[j]==x){
                    sterge(j);
                    break;
                }
            }
        }
        if(o==3){
            fout<<v[1]<<'\n';
        }
    }
    fin.close();fout.close();
    return 0;
}