样例返回10 0.
归并部分应该没有问题.
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll a[500010],tmp[500010],ans;
int n;
int mergesort(int l,int r) {
if(l==r) return 0;
int mid=l+(r-l)/2;
mergesort(l,mid);
mergesort(mid+1,r);
int i=l,j=mid+1,k=l;
while(i<=mid&&j<=r) {
if(a[i]<=a[j])tmp[k++]=a[i++];
else {
tmp[k++]=a[j++];
ans+=mid-i+1;
}
}
while(i<=mid)tmp[k++]=a[i++];
while(j<=r)tmp[k++]=a[j++];
for(int i=l; i<=r; i++)a[i]=tmp[i];
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
while (scanf("%d",&n) && n !=0) {
ans = 0;
for (int i = 0; i < n; ++i) {
cin>>a[i];
}
mergesort(0, n);
cout<<ans<<' ';
}
return 0;
}