Cod sursa(job #380265)

Utilizator blasterzMircea Dima blasterz Data 5 ianuarie 2010 14:24:18
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <cstdio>
#include <algorithm>
#include <ctime>
#include <cstdlib>

using namespace std;
#define N 500001
#define dim 8192
char ax[dim];
int pz;

inline void cit(int &x)
{
	x = 0;
	while(ax[pz] < '0' || ax[pz] > '9')
		if(++pz == dim) fread(ax,1,dim,stdin),pz =0;
	
	while(ax[pz] >= '0' && ax[pz] <= '9')
	{
		x = x * 10 + ax[pz] - '0';
		if(++pz == dim) fread(ax,1,dim,stdin),pz = 0;
	}
}

int a[N];
int n;

inline void quick(int a[], int l, int r)
{
	if(l >= r) return;
	int v = a[r];
	//swap(a[(l+r)/2], a[r]);
	
	int i , j = l-1;

	for(i = l; i <= r; ++i)
		if(a[i] <= v)
			swap(a[i], a[++j]);
		
	quick(a, l, j-1);
	quick(a, j+1, r);
	
}

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