Cod sursa(job #1807247)

Utilizator NicolaalexandraNicola Alexandra Mihaela Nicolaalexandra Data 16 noiembrie 2016 11:28:58
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#define DIM 500001
using namespace std;
int i,n,j,p,c;
int v[DIM],w[DIM];
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");

int main (){

    fin>>n;
    for (i=1;i<=n;i++)
        fin>>v[i];
    // am transformat in heapmax
    for (i=2;i<=n;i++){
        c = i;
        p = c/2;
        while (v[c] > v[p] && p != 0){
            swap (v[c],v[p]);
            c = p;
            p = p/2;
        }
    }
    w[1] = v[1];

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




    return 0;
}