Cod sursa(job #2294338)

Utilizator OctavianVasileVasileOctavian OctavianVasile Data 2 decembrie 2018 11:47:44
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v [500003], n, f, p;
int main (){
    fin >> n;
    for (int i = 1; i <= n; i ++) {
        fin >> v [i];
        p = i / 2;
        f = i;
        while (p > 0 && v [f] > v [p]) {
            swap (v [f], v [p]);
            f = p;
            p /= 2;
        }
    }
    for (int i = n; i >= 2; i --) {
        swap (v [i], v [1]);
        p = 1; f = 2 * p;
        while (f < i) {
            if (f + 1 < i && v [f + 1] > v [f])
                f ++;
            if (v [p] < v [f])
                swap (v [p], v [f]);
            else break;
            p = f;
            f = 2 * p;
        }
    }
    for (int i = 1; i <= n; i ++)
        fout << v [i] << " ";
    return 0;
}