Advertisement
MaxObznyi

Q.19

Nov 17th, 2019
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.80 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. vector<int> tmp, a;
  6.  
  7. void solve(int l, int r) {
  8. if (l >= r)
  9. return;
  10. int m = (l + r) / 2;
  11. solve(l, m);
  12. solve(m + 1, r);
  13. int i = l, j = m + 1, cur = l;
  14. while (i <= m && j <= r)
  15. if (a[i] < a[j])
  16. tmp[cur] = a[i], i++, cur++;
  17. else
  18. tmp[cur] = a[j], j++, cur++;
  19. while (i <= m)
  20. tmp[cur] = a[i], i++, cur++;
  21. while (j <= r)
  22. tmp[cur] = a[j], j++, cur++;
  23. for (int i = l; i <= r; i++)
  24. a[i] = tmp[i];
  25. }
  26.  
  27. int main()
  28. {
  29. int n;
  30. cin >> n;
  31. a.resize(n);
  32. tmp.resize(n);
  33. for (int i = 0; i < n; i++)
  34. cin >> a[i];
  35. solve(0, n - 1);
  36. for (int i = 0; i < n; i++)
  37. cout << a[i] << ' ';
  38. return 0;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement