归并排序求逆序对
#include<bits/stdc++.h>
using namespace std;
long long a[1000000],p[2000000],ans;
void msort(int l,int r){
if(l==r) return;
int mid=l+(r-l)/2;
msort(l,mid);
msort(mid+1,r);
int i=l,j=mid+1,k=0;
while(j<=r&&i<=mid){
if(a[i]<=a[j]){
p[k]=a[i];
k++;
i++;
} else{
p[k]=a[j];
j++;
k++;
ans+=mid-i+1;
}
}
}
int main()
{
int n;
cin>>n;
for(int i=n;i;i--) cin>>a[i];
msort(1,n);
cout<<ans;
}
大佬求调