Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int inv=0;
- vector <long long> mergesort(vector <long long> v, int i, int j){
- if (i==j) {
- vector<long long> ans;
- ans.push_back(v[i]);
- return ans;
- }
- int mid = (i+j)/2;
- vector <long long> lv = mergesort(v, i, mid), rv = mergesort(v, mid+1, j), ans;
- int l=0, r=0;
- while (l<mid-i+1 or r<j-mid) {
- if(l>=mid-i+1) ans.push_back(rv[r++]);
- else if(r>=j-mid) ans.push_back(lv[l++]);
- else if(rv[r]>=lv[l]) ans.push_back(lv[l++]);
- else ans.push_back(rv[r++]), inv+=mid-i+1-l;
- }
- return ans;
- }
- int main(){
- ios_base::sync_with_stdio (0);
- cin.tie(0);
- int t, n, x;
- cin >> t;
- for(int i=1; i<=t; i++){
- cin >> n;
- inv=0;
- vector <long long> v;
- for(int j=1; j<=n; j++){
- cin >> x;
- v.push_back(x);
- }
- mergesort(v, 0, n-1);
- cout <<inv<<endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement