Cod sursa(job #2705166)

Utilizator mihnea03Ciocioiu Mihnea mihnea03 Data 12 februarie 2021 04:04:04
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#define dim 500010
using namespace std;
int a[dim];
int i,n,nod;

int main() {
    ifstream fin("algsort.in");
    ofstream fout("algsort.out");
    fin>>n;
    for (i=1;i<=n;i++) {
        fin>>a[i];
    }
    for (i=2;i<=n;i++) {
        int nod=i;
        while (nod!=1&&a[nod/2]<a[nod]) {
            swap (a[i/2],a[i]);
            nod=nod/2;
        }
    }
    for (i=n;i>=2;i--) {
        swap (a[i],a[1]);
        int nod=1;
        int copil=2;
        while (2*nod+1<=i-1&&(a[nod]<a[nod*2]||a[nod]<a[nod*2+1])) {
            if (a[2*nod]>a[2*nod+1]) {
                swap(a[nod],a[2*nod]);
                nod*=2;
            }
            else {
                swap(a[nod],a[2*nod+1]);
                nod=nod*2+1;
            }
        }
    }
    for (i=1;i<=n;i++) {
        fout<<a[i]<<" ";
    }
    return 0;
}