Pagini recente » Cod sursa (job #2799188) | Cod sursa (job #266645) | Cod sursa (job #1374164) | Cod sursa (job #2215615) | Cod sursa (job #3306819)
#include <iostream>
#include <fstream>
#include <climits>
#include <vector>
#include <stack>
#include <cmath>
// #include <bits/stdc++.h>
#define in fin
#define out fout
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n;
int v[500001];
void sort(int l, int r){
if(l == r) return;
int m = (l + r) / 2;
sort(l, m);
sort(m + 1, r);
int i1 = l, i2 = m + 1;
vector<int> nw;
for(int i = l; i <= r; i++){
if(i1 == m + 1) nw.push_back( v[i2++] );
else if(i2 == r + 1) nw.push_back( v[i1++] );
else if(v[i1] < v[i2]) nw.push_back( v[i1++] );
else nw.push_back( v[i2++] );
}
// cout << "l = " << l << " r = " << r << " nw = ";
// for(const int &x : nw) cout << x << " ";
// cout << '\n';
for(int i = l; i <= r; i++) v[i] = nw[i - l];
}
signed main(){
ios_base::sync_with_stdio(false);
in.tie(NULL);
in >> n;
for(int i = 0; i < n; i++) in >> v[i];
sort(0, n - 1);
for(int i = 0; i < n; i++) out << v[i] << " ";
out << '\n';
return 0;
}