Cod sursa(job #2063984)

Utilizator shantih1Alex S Hill shantih1 Data 11 noiembrie 2017 17:50:34
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");

int n, i, j, v[500000], r[500000];

void merge (int a, int b, int a2, int b2)
{
	int i = a;
	int j = a2;
	int in = a;
	while (i <= b && j <= b2)
	{
		if (v[i] <= v[j])	
		{	r[in] = v[i];	i++;	in++;	}
		else
		{	r[in] = v[j];	j++;	in++;	}
	}
	while (i <= b)	
	{	r[in] = v[i];	in++;	i++;	}
	while (j <= b2)
	{	r[in] = v[j];	in++;	j++;	}
}

void mergesort(int in, int sf)
{
	if (sf > in)
	{
		int mid = in+(sf-in)/2;
		mergesort(in, mid);
		mergesort(mid+1, sf);
		
		merge (in, mid, mid+1, sf);
		
		for (int i = in; i <= sf; i++)
			v[i] = r[i];
	}
}

int main () {
	
	fin >> n;
	for (i = 1; i <= n; i++)
		fin >> v[i];
	
	mergesort(1, n);
	
	for (i = 1; i <= n; i++)
		fout << r[i] << " ";	cout << "\n";
}