求助,帮我看看哪里出问题了, 我现在还蒙着
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
long long n;
long long a[N];
long long b[N];
long long ans=0;//逆序对的个数
void gsort(long long l,long long r)
{
if(l==r) return;
long long mid=(l+r)/2;
gsort(l,mid); gsort(mid+1,r);
long long h1=l,h2=mid+1,h=l;
while(h1<=mid&&h2<=r)
{
if(a[h1]<=a[h2])
b[h++]=a[h1++];
else{
b[h++]=a[h2++];
ans+=(mid-l+1);
}
}
while(h1<=mid) b[h++]=a[h1++];
while(h2<=r) b[h++]=a[h2++];
for(int i=l;i<=r;i++)
{
a[i]=b[i];
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++){ cin>>a[i];}
gsort(1,n);
// for(int i=1;i<=n;i++)
// {
// cout<<b[i]<<" ";
// }
cout<<ans<<"\n";
return 0;
}