Cod sursa(job #2428554)

Utilizator Joystick6208Catalin Topala Joystick6208 Data 5 iunie 2019 19:17:59
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <cstdio>
using namespace std;

int n;
int a[500001];

int merge(int a[], int l, int m, int r)
{
	int n1 = m-l+1;
	int n2 = r-m;

	int L[n1], R[n2];

	for(int i = 0; i < n1; ++i)
		L[i] = a[l+i];
	for(int j = 0; j < n2; ++j)
		R[j] = a[m+1+j];

	int i = 0, j = 0, k = l;
	while(i < n1 && j < n2)
		if(L[i] < R[j])
			a[k++] = L[i++];
		else
			a[k++] = R[j++];

	while(i < n1)
		a[k++] = L[i++];
	while(j < n2)
		a[k++] = R[j++];
}

int sort(int a[], int l, int r)
{
	if(l < r)
	{
		int m = l + (r-l)/2;

		sort(a, l, m);
		sort(a, m+1, r);
		merge(a, l, m, r);
	}
}

int main()
{

	freopen("algsort.in", "r", stdin);
	freopen("algsort.out", "w", stdout);

	scanf("%d", &n);

	for(int i = 0; i < n; ++i)
		scanf("%d", &a[i]);

	sort(a, 0, n-1);
	for(int i = 0; i < n; ++i)
		printf("%d ", a[i]);

	return 0;
}