anon20016

D

Nov 14th, 2019
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. #define _CRT_SECURE_NO_DEPRECATE
  2.  
  3. #include <iostream>
  4. #include <vector>
  5. #include <string>
  6. #include <map>
  7. #include <set>
  8. #include <algorithm>
  9.  
  10. using namespace std;
  11.  
  12. long long cnt;
  13. vector<int> a, c;
  14. void mergesort(int l, int r)
  15. {
  16. int mid;
  17. if (l < r)
  18. {
  19. mid = (l + r) / 2;
  20. mergesort(l, mid);
  21. mergesort(mid + 1, r);
  22. merge(l, r, mid);
  23. }
  24. return;
  25. }
  26.  
  27. void merge(int l, int r, int m)
  28. {
  29. long long i = l , j = m + 1, k = l;
  30. while (i <= m && j <= r)
  31. {
  32. if (a[i] <= a[j])
  33. {
  34. c[k++] = a[i++];
  35. }
  36. else
  37. {
  38. c[k++] = a[j++];
  39. cnt += (long long)m - i + 1LL;
  40. }
  41. }
  42. while (i <= m)
  43. {
  44. c[k++] = a[i++];
  45. }
  46. while (j <= r)
  47. {
  48. c[k++] = a[j++];
  49. }
  50. for (i = l; i < k; i++)
  51. {
  52. a[i] = c[i];
  53. }
  54. }
  55.  
  56. int main() {
  57. freopen("input.txt", "r", stdin);
  58. freopen("output.txt", "w", stdout);
  59.  
  60. int n;
  61. cin >> n;
  62. cnt = 0;
  63. a.resize(n);
  64. c.resize(n);
  65. for (int i = 0; i < n; i++)
  66. {
  67. cin >> a[i];
  68. }
  69. mergesort(0, n - 1);
  70.  
  71. cout << cnt;
  72.  
  73. }
Advertisement
Add Comment
Please, Sign In to add comment