Cod sursa(job #2900147)

Utilizator ViAlexVisan Alexandru ViAlex Data 10 mai 2022 14:28:01
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include<iostream>
#include<fstream>

using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");

const int mx = 500100;
int v[mx];

int partition(int l, int r) {
    int q = l + rand() % (r - l + 1);
    swap(v[r], v[q]);

    int pivot = r;
    int k = l;
    for (int i = l; i <= r; i++) {
        if (v[i] < v[pivot]) {
            swap(v[i], v[k]);
            k++;
        }
    }
    swap(v[k], v[pivot]);
    return k;
}

void qsort(int l, int r) {
    if (l >= r)
        return;
    int pivot = partition(l, r);
    qsort(l, pivot - 1);
    qsort(pivot + 1, r);
}

int main() {
    srand(time(NULL));
    int n;
    in >> n;
    for (int i = 0; i < n; i++) {
        in >> v[i];
    }
    qsort(0, n - 1);
    for (int i = 0; i < n; i++) {
        out << v[i] << " ";
    }
    return 0;
}