Pagini recente » Cod sursa (job #1215400) | Cod sursa (job #1637509) | Cod sursa (job #2291658) | Cod sursa (job #2737183) | Cod sursa (job #239811)
Cod sursa(job #239811)
#include<fstream.h>
#define max 200001
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)
{
if(a[k]<a[k/2])
{
aux=a[k/2];
a[k/2]=a[k];
a[k]=aux;
k=k/2;
}
else break;
}
}
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],down(p);}
}
}
f.close();
g.close();
return 0;
}