Cod sursa(job #1807248)

Utilizator BogauuuBogdan Ivancu Bogauuu Data 16 noiembrie 2016 11:30:29
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>

using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

int n,i,c,p,v[500002];

int main()
{
    fin >> n;
    fin >> v[1];
    for (i=2;i<=n;i++)
    {
        fin >> v[i];
        c=i;
        p=i/2;
        while (v[c]>v[p] && p!=0)
        {
            swap(v[c],v[p]);
            c=p;
            p=p/2;
        }
    }
    for (i=n;i>=2;i--)
    {
        swap(v[1],v[i]);
        p=1;
        c=2*p;
        while (c<=i-1)
        {
            if(v[c+1]>v[c] && c+1<=i-1) c++;
            if (v[p]<v[c])
            {
                swap(v[p],v[c]);
                p=c;
                c=2*c;
            }
            else break;
        }
    }
    for (i=1;i<=n;i++)
        fout << v[i] << " ";

    return 0;
}