Pagini recente » Cod sursa (job #3225803) | Cod sursa (job #981642) | Cod sursa (job #564100) | Cod sursa (job #2970075) | Cod sursa (job #1807934)
#include <cstdio>
#include <algorithm>
#include <cstdlib>
#define in "algsort.in"
#define out "algsort.out"
#define NMAX (500000 + 7)
#define RANDVAL 163
#define Konst 34
using namespace std;
int n, v[NMAX];
int random(const int &St, const int &Dr)
{
return St + (1LL*rand()*rand() + Konst)%(Dr-St+1);
}
void qSort(const int &st, const int &dr)
{
if(st >= dr) return ;
int pivot = v[random(st, dr)], x = st, y = dr;
while(x <= y)
{
for( ; (v[x] < pivot) && x<= dr; ++x);
for( ; (v[y] > pivot) && y>= st; --y);
if(x <= y)
{
swap(v[x], v[y]);
++x;
--y;
}
}
qSort(st, y);
qSort(x, dr);
}
int main()
{
freopen(in, "r", stdin);
freopen(out, "w", stdout);
srand(RANDVAL);
scanf("%d", &n);
for(int i = 1; i<= n; ++i) scanf("%d", &v[i]);
qSort(1, n);
for(int i = 1; i<= n; ++i) printf("%d ", v[i]);
printf("\n");
return 0;
}