Pagini recente » Monitorul de evaluare | Cod sursa (job #3335554) | Monitorul de evaluare | Cod sursa (job #3341855) | Cod sursa (job #3341655)
#include <bits/stdc++.h>
using namespace std;
int n, v[500000];
void quicksort(int st, int dr) {
if(st >= dr) return;
int pivot = v[st];
int nrValSmaller = 0;
for(int i = st; i <= dr; ++i) {
if(v[i] < pivot) {
++nrValSmaller;
}
}
swap(v[st], v[st + nrValSmaller]);
for(int i = st, j = dr; i < st + nrValSmaller && j > st + nrValSmaller; ) {
if(v[i] < pivot) ++i;
if(v[j] >= pivot) --j;
if(i < st + nrValSmaller && j > st + nrValSmaller)
swap(v[i], v[j]);
}
quicksort(st, st + nrValSmaller - 1);
quicksort(st + nrValSmaller + 1, dr);
}
signed main() {
cin.tie(nullptr)->sync_with_stdio(false);
#ifndef LOCAL
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
#endif
cin >> n;
for(int i = 0; i < n; ++i) {
cin >> v[i];
}
mt19937 random(2026);
shuffle(v, v + n, random);
quicksort(0, n-1);
for(int i = 0; i < n; ++i)
cout << v[i] << ' ';
return 0;
}