Pagini recente » Cod sursa (job #2627537) | Cod sursa (job #794470) | Cod sursa (job #2883559) | Cod sursa (job #1436551) | Cod sursa (job #2529508)
//Alex Postu :^)
#include <algorithm>
#include <stack>
#include <queue>
#include <deque>
#include <vector>
#include <string>
#include <set>
#include <map>
#include <cstring>
#include <bitset>
using namespace std;
//#include <iostream>
#include <fstream>
//ifstream cin("input.in"); ofstream cout("output.out");
ifstream cin ("algsort.in"); ofstream cout ("algsort.out");
static const int NMAX = 5e5 + 5;
int v[NMAX];
int sortedV[NMAX];
void mergeSort(int left, int right) {
if (left == right) {
return;
}
int middle = left + ((right - left) >> 1);
mergeSort(left, middle);
mergeSort(middle + 1, right);
int leftIdx = left;
int rightIdx = middle+1;
for (int i = left; i <= right; ++i) {
if (rightIdx > right || (leftIdx <= middle && v[leftIdx] <= v[rightIdx])) {
sortedV[i] = v[leftIdx++];
}
else {
sortedV[i] = v[rightIdx++];
}
}
for (int i = left; i <= right; ++i) {
v[i] = sortedV[i];
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int n;
cin >> n;
for (int i = 1; i <= n; ++i) {
cin >> v[i];
}
mergeSort(1, n);
for (int i = 1; i <= n; ++i) {
cout << v[i] << " ";
}
}