Pagini recente » Cod sursa (job #50089) | Cod sursa (job #549537) | Cod sursa (job #1276580) | Cod sursa (job #3002368) | Cod sursa (job #1041792)
#include<cstdio>
#include<algorithm>
using namespace std;
int i, n, a[500005];
void heap_up(int k) {
if (a[k]<a[k/2]){
swap(a[k], a[k/2]);
if (k>1) heap_up(k/2);
}
if (2*k+1<=n)
if (a[2*k]>a[2*k+1]) swap(a[2*k], a[2*k+1]);
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d", &n);
for (i=1;i<=n;i++) {
scanf("%d", &a[i]);
if (i>1) heap_up(i);
}
for (i=1;i<=n;i++) {
printf("%d ", a[i]);
if (2*i+1<=n)
if (a[2*i]>a[2*i+1]) swap(a[2*i], a[2*i+1]);
}
printf("\n"); return 0;
}