Pagini recente » Cod sursa (job #1435578) | Cod sursa (job #31293) | Cod sursa (job #1891647) | Cod sursa (job #2363448) | Cod sursa (job #893121)
Cod sursa(job #893121)
#include <iostream>
#include <fstream>
using namespace std;
int n=0,h[200000],aux,k,N,v[1000000];
ifstream f("heapuri.in");
ofstream g("heapuri.out");
void inserare(int x){
n++;
h[n]=x;
k=n;
while(h[k]<h[k/2] && k/2>=1){
aux=h[k];
h[k]=h[k/2];
h[k/2]=aux;
k=k/2;
}
}
void stergere(int k){
int min,p;
if(2*k<=n){
min=h[2*k];
p=2*k;
if(2*k+1<=n && h[2*k+1]<min){
min=h[2*k+1];
p=2*k+1;
}
aux=h[k];
h[k]=h[p];
h[p]=aux;
stergere(p);
}
}
void afiseaza(){
/* int i;
for(i=1;i<=n;i++){
cout<<h[i]<<" ";
}
cout<<'\n';*/
g<<h[1]<<'\n';
}
int main()
{
int x,cod,i,j;
f>>N;
for (i=1;i<=N;i++){
f>>cod;
if(cod==1){
f>>x;
inserare(x);
v[n]=x;
}
if(cod==2){
f>>x;
for(j=1;j<=n;j++){
if(v[x]==h[j]){
x=j;
break;
}
}
stergere(x);
}
if(cod==3){
afiseaza();
}
}
/* for(i=1;i<=n;i++){
cout<<v[i]<<" ";
}*/
return 0;
}