Cod sursa(job #377065)

Utilizator bog29Antohi Bogdan bog29 Data 23 decembrie 2009 12:52:49
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<fstream>
#define dmax 500003
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
long long n,v[dmax];

int divide(long long p,long long q)
{	long long st,dr,x;
	st=p;
	dr=q;
	x=v[p];
	while(st<dr)
	{	while(st<dr && v[dr]>=x)
			dr--;
		v[st]=v[dr];
		while(st<dr && v[st]<=x)
			st++;
		v[dr]=v[st];
	}
	v[st]=x;	
	return st;
}

void sort(long long p,long long q)
{	long long m;
	m=divide(p,q);
	if(m-1>p)
		sort(p,m-1);
	if(m+1<q)
		sort(m+1,q);	
}

int main()
{	long long i;
	in>>n;
	for(i=0;i<n;i++)
		in>>v[i];
	in.close();
	sort(0,n-1);
	for(i=0;i<n;i++)
		out<<v[i]<<" ";
	out.close();
	return 0;
}