Cod sursa(job #1043428)

Utilizator rzvrzvNicolescu Razvan rzvrzv Data 28 noiembrie 2013 16:13:42
Problema Heapuri Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include<cstdio>

using namespace std;

void heapup(int nod)
{
    int aux;
    if(a[h[nod]<a[h[nod/2]&&nod>1)
    {
		swap(a[h[nod]],a[h[nod/2]]);
		swap(h[nod],h[nod/2]);
		swap(poz[)
        heapup(nod/2);
    }
}

void heapdown(int i)
{
    int aux;
    if (i*2+1<=m)
    {
        if (a[h[2*i]<a[h[i]&&a[h[2*i+1]<=a[h[2*i])
        {
            aux=a[h[i];
            a[h[i]=a[h[i*2];
            a[h[i*2]=aux;
            heapdown(i*2);
        }
        if (a[h[2*i+1]<a[h[i]&&a[h[2*i+1]<a[h[2*i])
        {
            aux=a[h[i];
            a[h[i]=a[h[i*2+1];
            a[h[i*2+1]=aux;
            heapdown(i*2+1);
        }
    }
    else if (i*2<=m&&i*2+1>m&&a[h[2*i]<a[h[i])
        {
            aux=a[h[i];
            a[h[i]=a[h[i*2];
            a[h[i*2]=aux;
            heapdown(i*2);
        }
    return;
}


int main()
{
	freopen("heapuri.in","r",stdin);
	freopen("heapuri.out","w",stdout);
	scanf("%d ",&p);
	for(i=1;i<=p;i++)
	{
		scanf("%d%d",&op,&x);
		if(op==3)
		{
			printf("%d\n",a[h[1]]);
		}
		if(op==1)
		{
			h[++nr]=x;
			heapup(nr);
		}
	}
}