Cod sursa(job #2200882)

Utilizator AlexPop28Pop Alex-Nicolae AlexPop28 Data 2 mai 2018 21:10:08
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f ("algsort.in");
ofstream g ("algsort.out");

const int nmax = 5e5 + 5;
int n, v[nmax];

int pivot(int l, int r) {
    int x = v[ rand() % (r-l) + l ];

    --l, ++r;

    while(true) {
        do {
            --r;
        } while(v[r] > x);

        do {
            ++l;
        } while(v[l] < x);

        if(l < r) {
            swap(v[l], v[r]);
        } else
            return r;
    }
}

void quick(int l, int r) {
    if(l >= r)
        return;

    int piv = pivot(l, r);
    quick(l, piv);
    quick(piv + 1, r);
}

int main() {
    f >> n;
    for(int i = 1; i <= n; ++i) {
        f >> v[i];
    }

    srand(time(0));

    quick(1, n);

    for(int i = 1; i <= n; ++i) {
        g << v[i] << ' ';
    }

    f.close();
    g.close();
    return 0;
}