Cod sursa(job #1315656)

Utilizator SorinmocanuFMI Sorin Mocanu Sorinmocanu Data 12 ianuarie 2015 23:15:24
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<iostream>
#include<fstream>
using namespace std;
int a[500000],n,i;

void heapsort(int m)
{
    if(m==0) return;
    int t,n=m,p=m/2,i,c;

    while(1)
        {if(p>0) t=a[--p];
         else
            {n--;
            if(n==0) return;
            t=a[n];
            a[n]=a[0];}

        i=p;
        c=i*2+1;
        while(c<n)
            {if(c+1<n&&a[c+1]>a[c]) c++;
            if(a[c]>t)
                {a[i]=a[c];
                i=c;
                c=i * 2 + 1;}
            else break;}
        a[i]=t;}
}
int main()
{
    ifstream f("algsort.in");
    ofstream g("algsort.out");

    f>>n;
    for(i=0;i<n;i++) f>>a[i];

    heapsort(n);

    for(i=0;i<n;i++) g<<a[i]<<" ";

    f.close();
    g.close();
    return 0;
}