Cod sursa(job #833923)

Utilizator dariusdariusMarian Darius dariusdarius Data 13 decembrie 2012 13:44:10
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
int a[500005],aux[500005];
void merge(int st,int dr)
{
	if(st==dr) return;
	int med;
	med=(st+dr)/2;
	merge(st,med);
	merge(med+1,dr);
	int p1,p2,u=-1;
	p1=st;p2=med+1;
	while(p1<=med && p2<=dr)
		if(a[p1]>a[p2]) aux[++u]=a[p2++];
		else aux[++u]=a[p1++];
	while(p1<=med) aux[++u]=a[p1++];
	while(p2<=dr ) aux[++u]=a[p2++];
	for(int i=st;i<=dr;i++)
		a[i]=aux[i-st];
}
int main()
{
	freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);
	int n,i;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		scanf("%d",&a[i]);
	merge(1,n);
	for(i=1;i<=n;i++)
		printf("%d ",a[i]);
	return 0;
}