Cod sursa(job #2698751)

Utilizator Afanasiuc_DanielDaniel Afanasiuc Afanasiuc_Daniel Data 22 ianuarie 2021 21:52:39
Problema Sortare prin comparare Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
unsigned long long int v[500001], tmp[500001], n;
void MergeSort(int st, int dr)
{
	if (st < dr)
	{
		int m = (st + dr) / 2;
		MergeSort(st, m);
		MergeSort(m + 1, dr);
		//Interclasare
		int i = st, j = m + 1, k = 0;
		while (i <= m && j <= dr)
			if (v[i] < v[j])
				tmp[++k] = v[i++];
			else
				tmp[++k] = v[j++];
		while (i <= m)
			tmp[++k] = v[i++];
		while (j <= dr)
			tmp[++k] = v[j++];
		for (i = st, j = 1; i <= dr; i++, j++)
			v[i] = tmp[j];
	}
}
int main() 
{
	fin >> n;
	for (int i = 1; i <= n; ++i)
		fin >> v[i];
	MergeSort(1, n);
	for (int i = 1; i <= n; ++i)
		fout << v[i] << " ";
    return 0;
}