Cod sursa(job #1141832)

Utilizator CostanMiriamCostan Miriam CostanMiriam Data 13 martie 2014 10:44:52
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>

using namespace std;

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

int v[500010],n,i,j,p,c,aux,x,t;

void update (int x) {
    v[++t]=x;
    c=t;
    p=t/2;
    while (p!=0 && v[p]<v[c]) {
        aux=v[c];
        v[c]=v[p];
        v[p]=aux;
        c=p;
        p/=2;
    }
}

void corect () {
    p=1;c=2;
    while (c<i) {
        if (c+1<i && v[c+1]>v[c])
            c++;
        if (v[p]<v[c]) {
            aux=v[p];
            v[p]=v[c];
            v[c]=aux;
        }
        p=c;
        c*=2;
    }
}

int main () {

    fin>>n;
    for (i=1;i<=n;i++) {
        fin>>x;
        update(x);
    }
    for (i=n;i>=2;i--) {
        aux=v[1];
        v[1]=v[i];
        v[i]=aux;
        corect();
    }

    for (i=1;i<=n;i++)
        fout<<v[i]<<" ";

    return 0;
}