Cod sursa(job #2705167)

Utilizator mihnea03Ciocioiu Mihnea mihnea03 Data 12 februarie 2021 04:18:26
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 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 p=1;
        int c=2;
        while (c<=i-1) {
            ///punem in c fiul cu care trebuie sa dam swap
            if (c+1<=i-1&&a[c+1]>a[c]) { ///daca exista fiul din dreapta
                c++;
            }
            if (a[p]<a[c]) swap(a[p],a[c]);
            p=c;
            c=p*2;
        }
    }
    for (i=1;i<=n;i++) {
        fout<<a[i]<<" ";
    }
    return 0;
}