Pagini recente » Cod sursa (job #3184625) | Cod sursa (job #1896365) | Cod sursa (job #2431216) | Cod sursa (job #2745478) | Cod sursa (job #805641)
Cod sursa(job #805641)
#include <fstream>
using namespace std;
ifstream in("heap.in");
ofstream out("heap.out");
int a[100],aux,i,n,nh,x;
void urc(int p)
{
int aux1;
if (p==1||a[p/2]<a[p]) return;
aux1=a[p/2];
a[p/2]=a[p];
a[p]=aux1;
urc(p/2);
}
void cobor(int p)
{
int fs=p*2,fd=p*2+1,max1=p,aux1;
if(a[fs]<a[max1]&&fs<=nh) max1=fs;
if(a[fd]<a[max1]&&fd<=nh) max1=fd;
if (max1!=p)
{
aux1=a[p]; a[p]=a[max1]; a[max1]=aux1;
cobor(p);
}
}
int main()
{
in>>n;
nh=0;
for (i=1;i<=n;i++)
{
in>>x;
nh++;
a[nh]=x;
urc(nh);
}
for (i=1;i<=n;i++)
{
out<<a[1]<<" ";
aux=a[nh]; a[nh]=a[1]; a[1]=aux;
nh--;
cobor(1);
}
return 0;
}