Pagini recente » Cod sursa (job #2856040) | Cod sursa (job #123957) | Cod sursa (job #311962) | Cod sursa (job #2215690) | Cod sursa (job #1250740)
#include<stdio.h>
int v[10000],nr,i,n,tip,elem;
void urca(int k)
{
int aux;
while(k>=1&&v[k/2]>v[k])
{
aux=v[k/2];
v[k/2]=v[k];
v[k]=aux;
k/=2;
}
}
void coboara(int k,int n)
{
int aux, best;
char s = 1;
while(k*2<=n && s)
{
s = 0;
best=k;
if(v[best]>v[k*2])
{
best=k*2;
s = 1;
}
if(v[best]>v[k*2+1])
{
best=k*2+1;
s = 1;
}
aux=v[best];
v[best]=v[k];
v[k]=aux;
k=best;
}
}
int main()
{
FILE *fin=fopen("heap.in","r");
FILE *fout=fopen("heap.out","w");
fscanf(fin,"%d",&n);
for(i=1;i<=n;i++)
{
fscanf(fin,"%d",&tip);
if(tip!=3)
{
fscanf(fin,"%d",&elem);
if(tip==1)
{
nr++;
v[nr]=elem;
urca(nr);
}
else
{
v[1]=v[nr];
nr--;
coboara(1,nr);
}
}
else
{
fprintf(fout,"%d\n",v[1]);
}
}
fclose(fin);
fclose(fout);
return 0;
}