Pagini recente » Cod sursa (job #1187663) | Monitorul de evaluare | Cod sursa (job #1652087) | Cod sursa (job #2456465) | Cod sursa (job #1487271)
#include <stdio.h>
#include <iostream>
#define MAX 500005
using namespace std;
int N, v[MAX], aux[MAX];
void mergeSort (int l, int r) {
if (l == r) return;
int mid = (l + r) / 2;
mergeSort(l, mid);
mergeSort(mid+1, r);
int i, j, p = l;
for (i = l, j = mid + 1; i <= mid && j <= r;) {
if (v[i] > v[j]) {
aux[p] = v[j];
++j;
} else {
aux[p] = v[i];
++i;
}
++p;
}
while (i <= mid) {
aux[p] = v[i];
++p; ++i;
}
while (j <= r) {
aux[p] = v[j];
++p; ++j;
}
for (i = l; i <= r; ++i) {
v[i] = aux[i];
}
}
int main (void) {
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
ios_base::sync_with_stdio(false);
cin >> N;
for (int i = 0; i < N; ++i) {
cin >> v[i];
}
mergeSort(0, N-1);
for (int i = 0; i < N; ++i) {
cout << v[i] << " ";
}
return 0;
}