Cod sursa(job #652168)

Utilizator SteveStefan Eniceicu Steve Data 23 decembrie 2011 10:44:35
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>

using namespace std;

int v[500100], i, j, x[500100];

void merge (int l1, int l2)
{
	int jumate = (l1 + l2) >> 1, limita1 = l1, limita2 = jumate + 1, s = l1 - 1;
	if (l1 >= l2) return;
	merge (l1, jumate);
	merge (limita2, l2);
	while ((limita1 <= jumate) && (limita2 <= l2))
	{
		if (v[limita1] < v[limita2])
		{
			x[++s] = v[limita1];
			limita1++;
		}
		else
		{
			x[++s] = v[limita2];
			limita2++;
		}
	}
	for (i = limita1; i <= jumate; i++)
	{
		x[++s] = v[i];
	}
	for (i = limita2; i <= l2; i++)
	{
	    x[++s] = v[i];
	}
	for (i = l1; i <= l2; i++)
	{
		v[i] = x[i];
	}
}

int main ()
{
	int lungime;
	ifstream fin;
	fin.open ("algsort.in");
	fin >> lungime;
	for (i = 0; i < lungime; i++)
	{
		fin >> v[i];
	}
	fin.close ();
	merge (0, lungime - 1);
	ofstream fout;
	fout.open ("algsort.out");
	for (i = 0; i < lungime; i++)
	{
		fout << v[i] << " ";
	}
	fout.close ();
	return 0;
}