Cod sursa(job #764546)

Utilizator darkseekerBoaca Cosmin darkseeker Data 5 iulie 2012 16:10:42
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
using namespace std;

#define maxn 500007
ifstream fin("algsort.in"); ofstream fout("algsort.out");

int b[maxn],a[maxn];
	
void merge(int left,int right)
{
	if(left == right)
		return;
	int mid = (left + right)>>1;
	merge(left,mid);
	merge(mid + 1,right);
	int i,j,k = left - 1;
	for(i = left,j = mid + 1; i <= mid && j <= right;)
	{
		b[++k] = (a[i] < a[j])?a[i] : a[j];
		if(a[i] < a[j]) i++; else j++;
	}
	for(; i <= mid; i++) b[++k] = a[i];
	for(; j <= right; j++) b[++k] = a[j];
	if(k != right) b[right] = a[right];
	for(i = left; i <= right; i++)
		a[i] = b[i];
}

int main()
{
	int N,i;
	fin>>N;
	for(i = 1; i <= N; i++)
		fin>>a[i];
	merge(1,N);
	for(i = 1; i <= N; i++)
		fout<<a[i]<<' ';
	return 0;
}