Advertisement
Guest User

Untitled

a guest
Feb 24th, 2020
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.90 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int a[100000], b[100000];
  5. int n;
  6. long long cnt;
  7.  
  8. void mergesort(int a[], int p, int q)
  9. {
  10. if(q-p < 2)
  11. return;
  12.  
  13. int m = (p+q+1)/2;
  14. mergesort(a, p, m);
  15. mergesort(a, m, q);
  16.  
  17. for(int i=p; i<q; i++)
  18. b[i] = a[i];
  19.  
  20. int i = p, j = m, k = p;
  21. while(i<m && j<q)
  22. {
  23. if(b[i]<b[j])
  24. {
  25. a[k]=b[i];
  26. i++;
  27. k++;
  28. }
  29. else
  30. {
  31. cnt=cnt+m-i;
  32. a[k]=b[j];
  33. j++;
  34. k++;
  35. }
  36. }
  37. while(i<m)
  38. {
  39. a[k]=b[i];
  40. i++;
  41. k++;
  42. }
  43. while(j<q)
  44. {
  45. a[k]=b[j];
  46. j++;
  47. k++;
  48. }
  49. }
  50.  
  51. int main()
  52. {
  53. cin>>n;
  54.  
  55. for(int i=0; i<n; i++)
  56. cin>>a[i];
  57.  
  58. cnt = 0;
  59. mergesort(a, 0, n);
  60. cout<<cnt;
  61. return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement