Cod sursa(job #270985)

Utilizator coderninuHasna Robert coderninu Data 4 martie 2009 19:18:04
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <cstdio>
#define Nmax 500001

int N, v[Nmax], i;

inline void swap(int &x, int &y) { int tmp = x; x = y; y = tmp; }
void sort(int p, int q)
{
	int st = p, dr = q, m = v[(st+dr)>>1];
	while (st < dr)
	{
		while (v[st] < m) ++st;
		while (v[dr] > m) --dr;
		if (st <= dr) swap(v[st++],v[dr--]);
	}
	if (st < q) sort(st,q);
	if (p < dr) sort(p,dr);
}

int main()
{
	for ( freopen("algsort.in", "r", stdin), scanf("%d\n", &N), i = 1; i<=N; ++i ) scanf("%d ", v + i);
	sort(1,N);
	for (freopen("algsort.out", "w", stdout), i = 1; i<=N; ++i) printf("%d ", v[i]);
	return 0;
}