AC
```c
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
typedef long long LL;
const int MAX = 500005 ;
int n ;
LL a[MAX] ;
LL b[MAX] ;
LL ans = 0 ;
void merge_sort(int l ,int r ){
if(l ==r )return ;
LL mid = (l+r)/2 ;
merge_sort(l,mid) ;
merge_sort(mid+1,r) ;
int i = l , k = l , j =mid +1 ;
while(i<=mid && j<=r){
if(a[i]<=a[j])
b[k++] =a[i++];
else{
b[k++] =a[j++] ;
ans+=mid-i+1 ;
}
}
while(i<=mid){
b[k++] =a[i++] ;
}
while(j<=r){
b[k++] =a[j++];
}
for(int i = l; i<=r ; i++){
a[i] = b[i] ;
}
}
int main(){
scanf("%d",&n);
for(int i = 1 ; i<=n ; i++ ){
scanf("%lld",&a[i]);
}
merge_sort(1,n) ;
cout<<ans;
return 0 ;
}
```
by timmyliao @ 2024-01-26 08:29:09
@[timmyliao](/user/1095093) 感谢大佬,可能是我归并排序那部分写的有点问题
by Yatsuha @ 2024-01-26 09:21:37