Cod sursa(job #1293808)

Utilizator ptquake10ptquake10 ptquake10 Data 16 decembrie 2014 16:38:38
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <map>
#include <vector>
#include <stack>
#include <iostream>
#include <set>
#include <map>
#include <queue>
#include <string>
#include <sstream>
#include <algorithm>
#include <exception>
using namespace std;

void merge_sort(vector<int> &a, vector<int> &b, int lo, int hi) {
	int md;
	if (lo >= hi) {
		return;
	}
	md = (lo + hi) / 2;
	merge_sort(a, b, lo, md);
	merge_sort(a, b, md+1, hi);
	int i = lo, j = md+1, k = 0;
	while (i <= md && j <= hi) {
		if (a[i] < a[j]) {
			b[k++] = a[i++];
		} else {
			b[k++] = a[j++];
		}
	}
	while (i <= md) {
		b[k++] = a[i++];
	}
	while (j <= hi) {
		b[k++] = a[j++];
	}
	for (i = lo, j = 0; i <= hi; i++) {
		a[i] = b[j++];
	}
}

int n;

int main() {
	freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);
	scanf("%d", &n);
	vector<int> a(n);
	vector<int> b(n);
	for (int i = 0; i < n; i++) {
		scanf("%d", &a[i]);
	}
	merge_sort(a, b, 0, n-1);
	for (int i = 0; i < n; i++) {
		printf("%d ", a[i]);
	}

	return 0;
}