#include <fstream>
const int MAXN = 5e5;
int arr[MAXN];
void qsort(int begin,int end) {int b=begin,e =end,aux, pivot=arr[(
begin +end) /2]; while( arr [b]< pivot)
++b; while(arr[e]> pivot )--e;while(b< e){arr[b]^=arr
[e]; arr[e] ^=arr [b]; arr[ b]^= arr
[e];do++b;while (arr[b]<pivot); do--e;while(arr [e]> pivot); }if (begin
<e)qsort(begin
,e); if
(e + 1 < end)
qsort (e+1
,end);}/*****/
int main() {
std::ifstream fin;
std::ofstream fout;
int n, i;
fin.open("algsort.in");
fin >> n;
for (i = 0; i < n; ++i) {
fin >> arr[i];
}
fin.close();
qsort(0, n - 1);
fout.open("algsort.out");
for (i = 0; i < n; ++i) {
fout << arr[i] << ' ';
}
fout << '\n';
fout.close();
return 0;
}
/*
void qsort(int begin, int end) {
int b = begin, e = end, aux, pivot = arr[(begin + end) / 2];
while (arr[b] < pivot)
++b;
while (arr[e] > pivot)
--e;
while (b < e) {
arr[b] ^= arr[e];
arr[e] ^= arr[b];
arr[b] ^= arr[e];
do
++b;
while (arr[b] < pivot);
do
--e;
while (arr[e] > pivot);
}
if (begin < e)
qsort(begin, e);
if (e + 1 < end)
qsort(e + 1, end);
}
^^^^^^^^^^^^^^^^^ acelasi qsort, dar formatat normal
*/