题解
2025-04-19 10:37:18
发布于:浙江
1阅读
0回复
0点赞
#include<iostream>
using namespace std;
int n,a[500010],temp[500010];
long long sum=0;
void MergeSort(int a[],int l,int r){
if(l>=r){
return ;
}
int mid=(l+r)/2;
MergeSort(a,l,mid);
MergeSort(a,mid+1,r);
int i=l,j=mid+1,k=l;
while(i<=mid&&j<=r){
if(a[i]<=a[j]){
temp[k++]=a[i++];
}else{
temp[k++]=a[j++];
sum+=mid-i+1;
}
}
while(i<=mid){
temp[k++]=a[i++];
}
while(j<=r){
temp[k++]=a[j++];
}
for(int i=l;i<=r;i++){
a[i]=temp[i];
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
MergeSort(a,1,n);
cout<<sum;
return 0;
}
这里空空如也
有帮助,赞一个