Advertisement
Guest User

Untitled

a guest
Aug 19th, 2018
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.97 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define pb push_back
  3. #define mp make_pair
  4. #define F first
  5. #define S second
  6. #define int long long
  7. #define pii pair <int, int>
  8. #define sz(a) (int)(a.size())
  9. #define resize(v) v.resize(unique(all(v)) - v.begin());
  10. #define all(a) a.begin(), a.end()
  11. #define forit(it, s) for(__typeof(s.begin()) it = s.begin(); it != s.end(); it ++)
  12.  
  13. using namespace std;
  14.  
  15. void Fast_Read_Out()
  16. {
  17. ios_base::sync_with_stdio(0);
  18. cin.tie(), cout.tie();
  19. }
  20.  
  21. void Random()
  22. {
  23. unsigned int seed;
  24. asm("rdtsc" : "=A" (seed));
  25. srand(seed);
  26. }
  27.  
  28. unsigned int Time()
  29. {
  30. unsigned int time = clock() / 1000.00;
  31. return time;
  32. }
  33.  
  34. const int inf = (1e9) + 123;
  35. const int N = (2e5) + 123;
  36. const int MN = (1e7);
  37. const int mod = (1e9) + 7;
  38.  
  39. int b[N], ans;
  40.  
  41. void merge(int a[], int n, int L[], int R[], int midl, int midr)
  42. {
  43. int i = 0, j = 0;
  44. while(i < midl || j < midr)
  45. {
  46. if(i < midl && j < midr)
  47. {
  48. if(L[i] <= R[j])
  49. {
  50. a[i + j] = L[i];
  51. i++;
  52. ans += j;
  53. }
  54. else
  55. {
  56. a[i + j] = R[j];
  57. j++;
  58. }
  59. }
  60. else if(i < midl)
  61. {
  62. a[i + j] = L[i];
  63. i++;
  64. ans += j;
  65. }
  66. else if(j < midr)
  67. {
  68. a[i + j] = R[j];
  69. j++;
  70. }
  71. }
  72. }
  73.  
  74. void Merge_Sort(int a[], int n)
  75. {
  76. if(n > 1)
  77. {
  78. int midl = n / 2, midr = n - midl;
  79. int L[midl + 132], R[midr + 132];
  80. for(int i = 0; i < n; i++)
  81. {
  82. if(i < midl) L[i] = a[i];
  83. else R[i - midl] = a[i];
  84. }
  85. Merge_Sort(L, midl);
  86. Merge_Sort(R, midr);
  87. merge(a, n, L, R, midl, midr);
  88.  
  89. }
  90. }
  91.  
  92. main ()
  93. {
  94. #ifdef JUDGE
  95. freopen("input.txt", "r", stdin);
  96. #endif
  97. Random();
  98. Fast_Read_Out();
  99. int t;
  100. cin >> t;
  101. while(t--)
  102. {
  103. int n;
  104. cin >> n;
  105. ans = 0;
  106. for(int i = 0; i < n; i++) b[i] = 0;
  107. for(int i = 0; i < n; i++) cin >> b[i];
  108. Merge_Sort(b, n);
  109. cout << ans << endl;
  110. }
  111. #ifdef JUDGE
  112. // cout << Time() << endl;
  113. #endif
  114. }
  115. // Easy Peasy Lemon Squeezy
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement