Cod sursa(job #1119914)

Utilizator sorin2kSorin Nutu sorin2k Data 24 februarie 2014 20:42:52
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<fstream>
#include<iostream>
using namespace std;

int a[500000], b[500000];

void merge_sort(int l, int r) {
	if(l < r) {
		int m = l + (r-l) / 2;
		merge_sort(l, m);
		merge_sort(m+1, r);

		// merge
		int i = l, j = m+1, k = l;
		while(i <= m && j <= r) {
			if(a[i] < a[j]) b[k++] = a[i++];
			else b[k++] = a[j++];
		}
		// copy the rest of the elements
		while(i <= m) b[k++] = a[i++];
		while(j <= r) b[k++] = a[j++];
		// copy b into a
		for(i = l; i <= r; i++) a[i] = b[i];
	}
}

int main() {
	ifstream fin("algsort.in");
	ofstream fout("algsort.out");
	int n, i;
	fin >> n;
	for(i = 0; i < n; i++) fin >> a[i];
	merge_sort(0, n-1);
	for(i = 0; i < n; i++) fout << a[i] << " ";
	return 0;
}