Pagini recente » Cod sursa (job #1443743) | Istoria paginii runda/pixelcup/clasament | Cod sursa (job #1454690) | Cod sursa (job #1943820) | Cod sursa (job #1293808)
#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;
}