Pagini recente » Cod sursa (job #2067503) | Cod sursa (job #137448) | Cod sursa (job #1374676) | Cod sursa (job #3283373) | Cod sursa (job #1238613)
#include <fstream>
using namespace std;
int a,b,h[10000000],i,j,k,ord[10000000];
long n;
ifstream f("heapuri.in");
ofstream g("heapuri.out");
void del(int ss)
{int i;
for (i=ss+1;i<=k;i++)
{h[i-1]=h[i];
ord[i-1]=ord[i];}
}
void swap(int i,int j)
{int aux;
aux=h[i];
h[i]=h[j];
h[j]=aux;
ord[i]=j;
ord[j]=i;
}
void heapup(int poz)
{int i;
i=poz/2;
if (h[poz]<h[i])
{swap(poz,i);
heapup(i);
}
}
void heapdown(int i,int k)
{int poz;
if (2*i>k) return;
if (2*i+1<=k)
{if (h[2*i+1]>h[2*i]) poz=2*i+1;
else poz=2*i;
}
else poz=2*i;
if (h[i]<h[poz])
{swap(i,poz);
heapdown(poz,k);}
}
int main()
{f>>n;
for (i=1;i<=n;i++)
{f>>a;
if(a!=3) f>>b;
if (a==1) {k++;
ord[k]=k;
h[k]=b;
heapup(k);
}
if(a==2){del(b);
for (j=2;j<=k;j++) heapup(j);
}
if (a==3) g<<h[1]<<'\n';
}
}