Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define pb push_back
- #define mp make_pair
- #define F first
- #define S second
- #define int long long
- #define pii pair <int, int>
- #define sz(a) (int)(a.size())
- #define resize(v) v.resize(unique(all(v)) - v.begin());
- #define all(a) a.begin(), a.end()
- #define forit(it, s) for(__typeof(s.begin()) it = s.begin(); it != s.end(); it ++)
- using namespace std;
- void Fast_Read_Out()
- {
- ios_base::sync_with_stdio(0);
- cin.tie(), cout.tie();
- }
- void Random()
- {
- unsigned int seed;
- asm("rdtsc" : "=A" (seed));
- srand(seed);
- }
- unsigned int Time()
- {
- unsigned int time = clock() / 1000.00;
- return time;
- }
- const int inf = (1e9) + 123;
- const int N = (2e5) + 123;
- const int MN = (1e7);
- const int mod = (1e9) + 7;
- int b[N], ans;
- void merge(int a[], int n, int L[], int R[], int midl, int midr)
- {
- int i = 0, j = 0;
- while(i < midl || j < midr)
- {
- if(i < midl && j < midr)
- {
- if(L[i] <= R[j])
- {
- a[i + j] = L[i];
- i++;
- ans += j;
- }
- else
- {
- a[i + j] = R[j];
- j++;
- }
- }
- else if(i < midl)
- {
- a[i + j] = L[i];
- i++;
- ans += j;
- }
- else if(j < midr)
- {
- a[i + j] = R[j];
- j++;
- }
- }
- }
- void Merge_Sort(int a[], int n)
- {
- if(n > 1)
- {
- int midl = n / 2, midr = n - midl;
- int L[midl + 132], R[midr + 132];
- for(int i = 0; i < n; i++)
- {
- if(i < midl) L[i] = a[i];
- else R[i - midl] = a[i];
- }
- Merge_Sort(L, midl);
- Merge_Sort(R, midr);
- merge(a, n, L, R, midl, midr);
- }
- }
- main ()
- {
- #ifdef JUDGE
- freopen("input.txt", "r", stdin);
- #endif
- Random();
- Fast_Read_Out();
- int t;
- cin >> t;
- while(t--)
- {
- int n;
- cin >> n;
- ans = 0;
- for(int i = 0; i < n; i++) b[i] = 0;
- for(int i = 0; i < n; i++) cin >> b[i];
- Merge_Sort(b, n);
- cout << ans << endl;
- }
- #ifdef JUDGE
- // cout << Time() << endl;
- #endif
- }
- // Easy Peasy Lemon Squeezy
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement