Cod sursa(job #2230797)

Utilizator ciutanpCiuta Andrei Calin ciutanp Data 11 august 2018 15:28:11
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<bits/stdc++.h>
using namespace std;

int h[1000001];

void fa_l(int i,int n,int h[])
{
    int maxi=i;
    if(i*2<=n && h[maxi]<h[i*2])
        maxi=i*2;
    if(i*2+1<=n && h[maxi]<=h[i*2+1])
        maxi=i*2+1;
    if(i!=maxi)
    {
        swap(h[maxi],h[i]);
        fa_l(maxi,n,h);
    }
}

int main()
{
    int n;
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    scanf("%d",&n);

    for(int i=1;i<=n;++i)
        scanf("%d",&h[i]);

    for(int i=n/2;i>=1;--i)
        fa_l(i,n,h);

    for(int i=n;i>=1;--i)
    {
        swap(h[1],h[i]);
        fa_l(1,i-1,h);
    }
    for(int i=1;i<=n;++i)
        printf("%d ",h[i]);
}