Cod sursa(job #1383519)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 10 martie 2015 12:41:12
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include<fstream>
using namespace std;
int n, i, c, p, aux;
int v[500002];
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int main(){
    fin>> n;
    for(i = 1; i <= n; i++){
        fin>> v[i];
    }
    for(i = 1; i <= n; i++){
        c = i;
        p = i / 2;
        while(p > 0){
            if(v[c] > v[p]){
                aux = v[c];
                v[c] = v[p];
                v[p] = aux;
                c = p;
                p = c / 2;
            }
            else{
                break;
            }
        }
    }
    for(i = n; i > 1; i--){
        aux = v[1];
        v[1] = v[i];
        v[i] = aux;
        c = 2;
        p = 1;
        while(c < i){
            if(c + 1 < i && v[c+1] > v[c]){
                c++;
            }
            if(v[c] > v[p]){
                aux = v[c];
                v[c] = v[p];
                v[p] = aux;
                p = c;
                c = p * 2;
            }
            else{
                break;
            }
        }
    }
    for(i = 1; i <= n; i++){
        fout<< v[i] <<" ";
    }
    return 0;
}