Cod sursa(job #1856273)

Utilizator PaterucAPetruc Andrei Stefan PaterucA Data 24 ianuarie 2017 18:51:05
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 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;
    for(fiu=2*tata;fiu<=lg;fiu=2*tata)
    {
        if(fiu<lg&&a[fiu+1]>a[fiu])
            fiu++;
        if(a[fiu]<=a[tata])
            break;
        swap(a[tata], a[fiu]);
        tata=fiu;
    }
}