Cod sursa(job #266867)

Utilizator free2infiltrateNezbeda Harald free2infiltrate Data 26 februarie 2009 10:54:04
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <stdio.h>
#define nmax 500001

long int A[nmax],n;


void shift(int x)
{
int ok=1,l;
while (ok)
{
ok=0;
if (2*x<=n) 
{
l=2*x;
if (2*x+1<=n) if (A[2*x]>A[2*x+1]) l = 2*x+1;
}

if (A[x]>A[l])
{
ok=1;
A[0]=A[x];
A[x]=A[l];
A[l]=A[0];

x=l;

}
}
}



int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);

long int i,k;
scanf("%ld",&n);
for (i=1;i<=n;i++) scanf("%ld",&A[i]);

for (i=n/2;i;i--)
shift(i);

k=n;
for (i=1;i<=k;i++)
{
printf("%ld ",A[1]);
A[1]=A[n];
n--;
shift(1);
}

return 0;
}