Pagini recente » Sandbox | Sandbox | Diferente pentru problema/oluna intre reviziile 11 si 29 | Atasamentele paginii Profil paloma | Cod sursa (job #1410367)
/*
How about a coding trick?
*/
#include <cstdio>
#define DIM 500500
using namespace std;
FILE *fin=freopen("algsort.in","r",stdin);
FILE *fout=freopen("algsort.out","w",stdout);
int n;
int A[DIM];
void Read()
{
int i;
scanf("%d", &n);
for(i = 1; i <= n ; ++i)
scanf("%d", &A[i]);
}
inline int Split(int lo, int hi)
{
int st, dr, aux;
st = lo, dr = hi, aux = A[lo];
while( st < dr )
{
while( st < dr && aux <= A[dr] )
--dr;
A[st] = A[dr];
while( st < dr && aux >= A[st] )
++st;
A[dr] = A[st];
}
A[st] = aux;
return st;
}
inline void Quick_Sort(int st, int dr)
{
int m = Split(st, dr);
if( m - 1 > st )
Quick_Sort(st, m - 1);
if( m + 1 < dr )
Quick_Sort(m + 1, dr);
}
int main()
{
Read();
Quick_Sort(1, n);
for(int i = 1; i <= n; ++i)
printf("%d ", A[i]);
return 0;
}