Cod sursa(job #291742)

Utilizator drag0s93Mandu Dragos drag0s93 Data 30 martie 2009 12:12:45
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<stdio.h>

int n,E;
int v[500020],rez[500020];

void merge(int x,int y)
{
	if(x<y)
	{
		int m=(x+y)/2;
		merge(x,m);
		merge(m+1,y);
		int sx = x, sy = m+1;
		E=1;
		while(sx<=m && sy<=y)
		{
			if(v[sx]>v[sy])
			{
				rez[E++]=v[sy];
				++sy;
			}
			else
			{				
				rez[E++]=v[sx];
				++sx;
			}
			
		}

		while(sx<=m)
		{
			rez[E++]=v[sx];
			++sx;
		}
 
		while(sy<=y)
		{
			rez[E++]=v[sy];
			sy++;
		}
		for(int i=1;i<=E-1;++i)
			v[x++]=rez[i];
	}
}

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