Cod sursa(job #590784)

Utilizator balakraz94abcd efgh balakraz94 Data 20 mai 2011 09:19:36
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<cstdio>
#define infile "algsort.in"
#define outfile "algsort.out"
#define n_max 500005
using namespace std;

void citeste();
void afiseaza();

int a[n_max];
int n;


void citeste()
{
	freopen(infile,"r",stdin);
	
	scanf("%d",&n);
	
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	
	fclose(stdin);
}



void quick(int p, int q)
{
	int m,st=p,dr=q,x=a[p];
	
	while(st<dr)
	{
		while(st<dr && a[dr]>=x) dr--;
		
		a[st]=a[dr];
		
		while(st<dr && a[st]<=x) st++;
		
		a[dr]=a[st];
	}
	a[st]=x;
	
	m=st;
	
	if(m-1>p) quick(p,m-1);
	
	if(m+1<q) quick(m+1,q);
	
}


void afiseaza()
{
	freopen(outfile,"w",stdout);
	
	for(int i=1;i<=n;i++)
		printf("%d ",a[i]);
	
	fclose(stdout);
}


int main()
{
	citeste();
	
	quick(1,n);
	
	afiseaza();
	
	return 0;
}