Cod sursa(job #2890741)

Utilizator divadddDavid Curca divaddd Data 16 aprilie 2022 14:18:27
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>
#define MAX 500002
using namespace std;
int n,v[MAX];

ifstream fin("algsort.in");
ofstream fout("algsort.out");

int main()
{
    fin >> n;
    for(int i = 1; i <= n; i++){
        fin >> v[i];
    }
    for(int i = 1; i <= n; i++){
        int j = i;
        while(j > 1 && v[j] > v[j/2]){
            swap(v[j], v[j/2]);
            j /= 2;
        }
    }
    for(int i = n; i >= 2; i--){
        swap(v[1], v[i]);
        int p = 1;
        int c = 2;
        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]);
            }else{
                break;
            }
            p = c;
            c *= 2;
        }
    }
    for(int i = 1; i <= n; i++){
        fout << v[i] << " ";
    }
    return 0;
}