fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef long long int ll;
  5.  
  6. const int n = 100;
  7. int tmp[n], ara[n], ans[n];
  8. void marge_sort (int b, int e) {
  9. if (b == e) {
  10. tmp[b] = ara[b];
  11. return;
  12. }
  13. int mid = (b + e) / 2;
  14. marge_sort(b, mid);
  15. marge_sort(mid + 1, e);
  16. vector<int> left, right;
  17. for (int i = b; i <= mid; i++) left.push_back(tmp[i]);
  18. for (int i = mid + 1; i <= e; i++) right.push_back(tmp[i]);
  19. int idx = b, l = 0, r = 0, sz1 = left.size(), sz2 = right.size();
  20. while (l < sz1 && r < sz2) {
  21. if (left[l] >= right[r]) {
  22. tmp[idx++] = left[l++];
  23. }
  24. else if (right[r] >= left[l]) {
  25. tmp[idx++] = right[r++];
  26. }
  27. }
  28. while (l < sz1) tmp[idx++] = left[l++];
  29. while (r < sz2) tmp[idx++] = right[r++];
  30. }
  31.  
  32. int main() {
  33. ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  34.  
  35. int n; cin >> n;
  36. for (int i = 1; i <= n; i++) cin >> ara[i];
  37. marge_sort(1, n);
  38. for (int i = 1; i <= n; i++) cout << tmp[i] << " ";
  39. cout << "\n";
  40.  
  41. }
Success #stdin #stdout 0.01s 5540KB
stdin
5
3 1 5 2 7
stdout
7 5 3 2 1