Cod sursa(job #1856268)

Utilizator PaterucAPetruc Andrei Stefan PaterucA Data 24 ianuarie 2017 18:42:13
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;

ifstream inf("algsort.in");
ofstream outf("algsort.out");

void heap_down(int, int);
int n, t, m, i, k, y, pos, a[500010];

int main()
{
    inf>>n;
    for(i=1; i<=n; i++)
        inf>>a[i];
    for(i=n/2; i>=1; i--)
        heap_down(i,n);
    for(i=n; i>=1; i--)
    {
        swap(a[1],a[i]);
        heap_down(1, i-1);
    }
    for(i=1; i<=n; i++)
        outf<<a[i]<<' ';

    return 0;
}
void heap_down(int tata, int lg)
{
    int fiu=2*tata;
    if(fiu>lg)
        return;
    if(fiu<lg&&a[fiu+1]>a[fiu])
        fiu++;
    if(a[fiu]>a[tata])
    {
        swap(a[tata], a[fiu]);
        heap_down(fiu, lg);
    }
}