Cod sursa(job #3351167)

Utilizator BaraianTudorBaraian Tudor Stefan BaraianTudor Data 17 aprilie 2026 12:56:46
Problema Sortare prin comparare Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <queue>
#include <fstream>
#include <map>
#include <cstring>
#include <stack>
#include <ctime>
#include <cstdlib>
#define N_MAX 500005
#define MOD 666013
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int n;
int a[N_MAX];
int partition(int l, int r) {
    int part_ind = l + rand() % (r - l + 1);
    int pivot = a[part_ind];
    int i = l - 1;
    for (int j = l; j <= r; ++j) {
        if (a[j] < pivot) {
            swap(a[j], a[++i]);
            if (i == part_ind)part_ind = j;
        }
    }
    swap(a[++i], a[part_ind]);
    return i;
}
void quick_sort(int l, int r) {
    if (l >= r)return;
    int index = partition(l, r);
    quick_sort(l, index - 1);
    quick_sort(index + 1, r);
}
int main()
{
    srand(time(0));
    in >> n;
    for (int i = 0; i < n; i++) {
        in >> a[i];
    }
    quick_sort(0, n - 1);
    for (int i = 0; i < n; i++) {
        out << a[i] << ' ';
    }
    return 0;
}