Cod sursa(job #589567)

Utilizator nicknameLare Nicu nickname Data 12 mai 2011 20:12:29
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <iostream>
#include <stdio.h>

using namespace std;

const int d=500001;

void Merge(int x[d], int l, int m, int r){
	int i=l,j=m+1,k=l;
	int b[d];
	while (i<=m && j<=r)
		b[k++]=x[i] < x[j] ? x[i++] : x[j++];
	while (i<=m)
		b[k++]=x[i++];
	while (j<=r)
		b[k++]=x[j++];
	for (i=l; i<=r; ++i)
		x[i]=b[i];
}

void MergeSort(int x[d], int l, int r){
	if (l >= r)
		return;
	int m=l+(r-l)/2;
	MergeSort(x,l,m);
	MergeSort(x,m+1,r);
	Merge(x,l,m,r);
}

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