fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. vector<int> vec;
  4. int n;
  5.  
  6. int recur(int l, int r){
  7. int ans = 0;
  8. if(l + 1 >= r){
  9. return ans;
  10. }
  11. int mid = (l + r) / 2;
  12. ans += recur(l, mid);
  13. ans += recur(mid, r);
  14. cout << l << " " << r << endl;
  15. for(int i = 1, j = 0; i < r; i++){
  16. while(j < i){
  17. if(vec[i] < vec[j]) ans++;
  18. j++;
  19. }
  20.  
  21. }
  22. inplace_merge(vec.begin() + l, vec.begin() + mid, vec.begin() + r);
  23. return ans ;
  24.  
  25.  
  26.  
  27. }
  28. signed main(){
  29.  
  30. cin >> n;
  31. for(int i = 0; i < n; i++){
  32. int num;
  33. cin >> num;
  34. vec.push_back(num);
  35. }
  36. cout << recur(0, n) << endl;
  37. }
Success #stdin #stdout 0.01s 5284KB
stdin
10
1 5 6 9 8 7 10 2 4 3
stdout
0 2
3 5
2 5
0 5
5 7
8 10
7 10
5 10
0 10
10