Cod sursa(job #2285631)

Utilizator HedeaMihneAHedea Mihnea HedeaMihneA Data 18 noiembrie 2018 20:40:42
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n , v[500005], tmp[500005];

void MergeSort(int st, int dr)
{
	if(st < dr)
	{
		int m = (st + dr) / 2;
		MergeSort(st , m);
		MergeSort(m + 1 , dr);
        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 = 0 ; i < n ; i ++)
		fin >> v[i];
	MergeSort(0 , n - 1);
	for(int i = 0 ; i < n ; i ++)
		fout << v[i] << " ";
	return 0;
}