Cod sursa(job #959399)

Utilizator avramavram andrei marius avram Data 8 iunie 2013 12:19:57
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
#define DIM 500010

using namespace std;

int v[DIM];
int n, c, p, aux, i, m;

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

    fin>>n;
    for (i = 1;i<=n;i++) {
        fin>>v[i];
        c = i;
        p = i/2;
        while (p!=0 && v[c]>v[p]) {
            aux = v[c];
            v[c] = v[p];
            v[p] = aux;
            c = p;
            p = p/2;
        }

    }

    for (i=1,m=n;i<=n;i++) {
        aux = v[m];
        v[m] = v[1];
        v[1] = aux;
        m--;
        p = 1;
        c = 2*p;
        while (c <= m) {
            if (c+1 <= m && v[c+1] > v[c])
                c++;
            if (v[p] < v[c]) {
                aux = v[p];
                v[p] = v[c];
                v[c] = aux;
            }
            p = c;
            c = c*2;

        }

    }


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

    return 0;
}