fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. using ll = long long;
  4.  
  5. vector<ll> a, tmp;
  6.  
  7. void merge_sort(ll l, ll r) {
  8. if (l >= r) return;
  9.  
  10. ll mid = (l + r) / 2;
  11. merge_sort(l, mid);
  12. merge_sort(mid + 1, r);
  13.  
  14. ll i = l, j = mid + 1, k = l;
  15. while (i <= mid && j <= r) {
  16. if (a[i] <= a[j]) tmp[k++] = a[i++];
  17. else tmp[k++] = a[j++];
  18. }
  19. while (i <= mid) tmp[k++] = a[i++];
  20. while (j <= r) tmp[k++] = a[j++];
  21.  
  22. for (ll t = l; t <= r; t++) a[t] = tmp[t];
  23. }
  24.  
  25. int main() {
  26. ios::sync_with_stdio(false);
  27. cin.tie(nullptr);
  28.  
  29. ll n;
  30. cin >> n;
  31. a.resize(n + 1);
  32. tmp.resize(n + 1);
  33.  
  34. for (ll i = 1; i <= n; i++) cin >> a[i];
  35.  
  36. merge_sort(1, n);
  37.  
  38. for (ll i = 1; i <= n; i++) cout << a[i] << " ";
  39. }
Success #stdin #stdout 0.01s 5292KB
stdin
5
3 4 2 1 3
stdout
1 2 3 3 4