Pagini recente » Cod sursa (job #1519438) | Cod sursa (job #220788) | Cod sursa (job #741197) | Cod sursa (job #1823495) | Cod sursa (job #253197)
Cod sursa(job #253197)
#include<fstream.h>
#define max 200005
ifstream f("heapuri.in");
ofstream g("heapuri.out");
long i,n,a[max];
void down(int k)
{
long t=2*k,aux;
while(t<=n)
{
if(t<n && a[t+1]<a[t]) t++;
if(a[k]>a[t])
{
aux=a[t];
a[t]=a[k];
a[k]=aux;
k=t;
t=2*k;
}
else break;
}
}
void up(int k)
{
long aux;
while(k>=1 && a[k]<a[k/2])
{
aux=a[k/2];
a[k/2]=a[k];
a[k]=aux;
k=k/2;
}
}
int main()
{
long v[max],lx,x,y,l,p;
f>>l;
n=0,lx=0;
for(i=1;i<=l;i++)
{ f>>x;
switch(x)
{
case 3:g<<a[1]<<"\n";break;
case 1:{f>>y, a[++n]=y,v[++lx]=y,up(n);break;}
case 2:{f>>y,p=0;
while(a[p]!=v[y])p++;
a[p]=a[n],n--,down(p);}
}
}
f.close();
g.close();
return 0;
}