关注小号(C112345565_)给
回复可能会迟一些
以下是代码:
#include<bits/stdc++.h>
using namespace std;
long long ans=0;
int a[500005]={0},b[500005]={0};
void msort(int a[],int l,int mid,int r)
{
int i=l;
int j=mid+1;
int k=l;
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 m=l;m<=r;++m) a[m]=b[m];
}
void mesort(int a[],int l,int r)
{
if(l>=r) return ;
int mid=l+(r-l)/2;
mesort(a,l,mid);
mesort(a,mid+1,r);
msort(a,l,mid,r);
}
int main() {
int n;
scanf("%d",&n);
for(int i=0;i<n;++i) scanf("%d",&a[i]);
mesort(a,0,n-1);
printf("%d",ans);
}
另:蒟蒻下载了一个数据等一下发出来,太大力