原题链接
MyCode:
#include<bits/stdc++.h>
using namespace std;
int a[500005];
int c[500005];
long long n,ans;
void mergesort(int l,int r){
memset(c,0,sizeof(c));
if(l==r)return;
int m=(l+r)/2;
mergesort(l,m);
mergesort(m+1,r);
int p1=l,p2=m+1,cnt=l;
while(p1<=m&&p2<=r){
if(a[p1]<=a[p2])c[cnt++]=a[p1++];
else c[cnt++]=a[p2++],ans+=m-p1+1;
}
while(p1<=m)c[cnt++]=a[p1++];
while(p2<=r)c[cnt++]=a[p2++];
for(int i=l;i<=r;i++)a[i]=c[i];
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
mergesort(1,n);
cout<<ans;
return 0;
}