Cod sursa(job #3326786)

Utilizator MateiDiaconuDiaconu Matei Stefan MateiDiaconu Data 30 noiembrie 2025 14:59:40
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>

using namespace std;

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

#define MAXN 500000

int v[MAXN];


void mysort(int be, int en){
    int b, e, piv;
    b = be;
    e = en;
    piv = v[b + rand() % (e - b + 1)];

    while(v[b] < piv){
        b++;
    }
    while(v[e] > piv){
        e--;
    }
    while(b < e){
        swap(v[b], v[e]);

        do{
            b++;
        }while(v[b] < piv);

        do{
            e--;
        }while(v[e] > piv);
    }

    if(be < e){
        mysort(be, e);
    }
    if(e + 1 < en){
        mysort(e + 1, en);
    }
}

int main()
{
    int n, i;

    fin>>n;

    for(i = 0; i < n; i++){
        fin>>v[i];
    }

    mysort(0, n - 1);

    for(i = 0; i < n; i++){
        fout<<v[i]<<' ';
    }

    fin.close();
    fout.close();
    return 0;
}