Cod sursa(job #2110314)

Utilizator GeoeyMexicanuBadita George GeoeyMexicanu Data 20 ianuarie 2018 15:34:28
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

long long a[500010];
void heapify(long long a[500010],int n,int t)
{
    int j,k;
    j=t;
    int heapify=0;
    while(j<=n && heapify==0)
    {
        if(2*j>n)
            heapify=1;
        else
        {
            k=2*j;
            if(k+1<=n && a[k]<a[k+1])
                k=k+1;
            if(a[j]<a[k])
            {
                swap(a[j],a[k]);
                j=k;
            }
            else
                heapify=1;
        }
    }
}
void swap1(long long &a,long long &b,long long c)
{
    c=a;
    a=b;
    b=c;
}
int main()
{
    int n,i,j,m;
    f>>n;
    for(i=1;i<=n;i++)
        f>>a[i];
    for(i=n/2;i>=1;i--)
        heapify(a,n,i);
    m=n;
    while(m>1)
    {
        swap1(a[1],a[m]);
        m--;
        heapify(a,m,1);
    }
    for(i=1;i<=n;i++)
        g<<a[i]<<' ';
}