Cod sursa(job #495600)

Utilizator PlayLikeNeverB4George Marcus PlayLikeNeverB4 Data 25 octombrie 2010 22:19:11
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <stdio.h>

const int maxn=500001;
int i,N;
long int v[maxn];

void merge(int st,int m, int dr)
{
	long int aux[m-st+2],i,j,k;
	
	i=1; j=st;
	while(j<=m)
		aux[i++]=v[j++];
	
	i=1; k=st;
	while(j<=dr && k<j)
	{
		if(aux[i]<=v[j])
			v[k++]=aux[i++];
		else
			v[k++]=v[j++];
	}
	while(k<j)
		v[k++]=aux[i++];
}

void mergesort(int st, int dr)
{
	if(st<dr)
	{
		int m=st+(dr-st)/2;
		mergesort(st,m);
		mergesort(m+1,dr);
		merge(st,m,dr);
	}
}

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