Cod sursa(job #1718433)

Utilizator bogdanboboc97Bogdan Boboc bogdanboboc97 Data 17 iunie 2016 20:35:22
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int a[500001],n,aux[500001];
void Merge(int beg1,int end1,int beg2,int end2)
{
	int k=0,i,j;
	for(i=beg1,j=beg2;i<=end1 && j<=end2;)
	{
		if(a[i] < a[j])
		{
			aux[++k]=a[i];
			i++;
		}
		else{
			aux[++k]=a[j];
			j++;
		}
	}
	if(i<=end1)
	{
		for(;i<=end1;i++)
		{
			aux[++k]=a[i];
		}
	}
	if(j<=end2)
	{
		for(;j<=end2;j++)
		{
			aux[++k]=a[j];
		}
	}
	for(i=1;i<=k;i++)
	{
		a[i+beg1-1]=aux[i];
	}
}
void MergeSort(int left,int right)
{
	if(left<right)
	{
		int mid=(left+right)/2;
		MergeSort(left,mid);
		MergeSort(mid+1,right);
		Merge(left,mid,mid+1,right);
	}
}
int main() {
	in>>n;
	for(int i=1;i<=n;i++)
	{
		in>>a[i];
	}
	MergeSort(1,n);
	for(int i=1;i<=n;i++)
	{
		out<<a[i]<<' ';
	}
	return 0;
}