Cod sursa(job #367616)

Utilizator prdianaProdan Diana prdiana Data 22 noiembrie 2009 21:53:57
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <stdio.h>

#define MAXN 500005
int a[MAXN],b[MAXN];

void mergesort(int l,int r)
{
	int m = (l + r) / 2,i,j,k;
	if (l == r)
	{
		return;
	}

	mergesort(l,m);
	mergesort(m+1,r);


	for ( i = l,k = l, j = m + 1; i<=m || j<=r;)
	{
		if ( j > r || ( i<=m && a[i] < a[j] ))
		{
			b[k++] = a[i++];
		}
		else
		{
			b[k++] = a[j++];

		}
	}

	for (k = l; k <= r; k++) a[k] = b[k];
}

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

	int i,n;

	scanf("%d",&n);

	for (i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
	}

	mergesort(1,n);

	for (i=1;i<=n;i++)
	{
		printf("%d ",b[i]);
	}

	return 0;

}