Cod sursa(job #2081344)

Utilizator TeodorAxinteAxinte Teodor TeodorAxinte Data 4 decembrie 2017 17:22:13
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int N = 500010;
int n,i,v[N];
void heap_down(int,int);
int main()
{
    fin>>n;
    for(i=1;i<=n;i++)fin>>v[i];
    for(i=n/2;i>=1;i--)heap_down(i,n);
    for(i=n;i>=1;i--){swap(v[1],v[i]);heap_down(1,i-1);}
    for(i=1;i<=n;i++)fout<<v[i]<<' ';

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