Cod sursa(job #723906)

Utilizator valiro21Valentin Rosca valiro21 Data 26 martie 2012 00:34:44
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <cstdio>
#define NMax 500021

int a[NMax],b[NMax],n;

void mergesort(int lo,int hi) {
	int mid=lo+((hi-lo)>>1),i,j,k;

	if(lo==hi) return;

	mergesort(lo,mid);
	mergesort(mid+1,hi);

	for(i=lo,j=mid+1,k=lo;i<=mid || j<=hi;k++)
		if( j>hi || ( a[i]<a[j] && i<=mid) )
			b[k]=a[i++];
		else
			b[k]=a[j++];

	for(int i=lo;i<=hi;i++)
		a[i]=b[i];
}

int main() {
	freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);

	scanf("%d",&n);
	for(int o=1;o<=n;o++)
		scanf("%d",&a[o]);
	
	mergesort(1,n);

	for(int o=1;o<=n;o++)
		printf("%d ",a[o]);
	printf("\n");
	return 0;
}