Cod sursa(job #272199)

Utilizator cameleonGeorgescu Dan cameleon Data 6 martie 2009 16:14:35
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <stdio.h>
#include <stdlib.h>
#include<algorithm>
using namespace std;
FILE *f,*g;
long nt,a[500001];;
void insbn(long x)
{       long i, p, u, mj;
	p=0; u=nt;
	while(p<=u)
	{       mj=(p+u)/2;
		if(x<a[mj])
			u=mj-1;
		else
			p=mj+1;
	}
	for(i=nt+1; i>p; i--)
	{	a[i]=a[i-1];
	}
	a[p]=x;
	nt++;
}
void intercls(long p,long mj,long u)
{
	long i=p,j=mj+1,k=0,c[500001];
	while(i<=mj && j<=u)
		if(a[i]<a[j])c[++k]=a[i++];
		else c[++k]=a[j++];
	while(i<=mj)c[++k]=a[i++];
	while(j<=u)c[++k]=a[j++];
	for(i=1;i<=k;i++)a[i+p-1]=c[i];
}
void sort (long p,long u)
{
	if(p<u)
	{
		long mj=(p+u)/2;
		sort(p,mj);
		sort(mj+1,u);
		intercls(p,mj,u);
	}
}
int main()
{
	long n,i;
		
	freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);
	scanf("%ld",&n);
	nt=0;
	for(i=0; i<n; i++) 
		scanf("%ld",&a[i]);
	sort(0,n-1);	
	//sort(a,a+n);
	for(i=0; i<n; i++) printf("%ld ",a[i]);
	return 0;
}