首先你需要知道什么是归并排序。
不知道滚home
模板题。
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,tot;
int a[5000005],b[5000005];
void sort(int left,int right)
{
if(left==right) return;
int mid=(left+right)/2;
sort(left,mid);
sort(mid+1,right);
int i=left,j=mid+1,p=left;
while(i<=mid&&j<=right)
{
if(a[i]<=a[j]) b[p]=a[i],i++,p++;
else b[p]=a[j],tot+=mid-i+1,j++,p++;
}
while(i<=mid) b[p]=a[i],i++,p++;
while(j<=right) b[p]=a[j],j++,p++;
for(int i=left;i<=right;i++) a[i]=b[i];
}
signed main()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
sort(1,n);
cout<<tot;
}