50pts
查看原帖
50pts
1581763
huangruize3楼主2025/7/24 21:38
#include<bits/stdc++.h>
using namespace std;
int n,a[500010],c[500010];
int  ans;

void msort(int l,int r){
    if(l==r)  return;
    long long  mid=(l+r)/2;
    long long lx=l;
    long long rx=mid+1;
    long long idx=l;
    msort(l,mid),msort(mid+1,r);
    while(lx<=mid&&rx<=r){
        if(a[lx]<=a[rx])c[idx++]=a[lx++];
    	else c[idx++]=a[rx++],ans+=mid-lx+1;
    }
    	
    while(lx<=mid)c[idx++]=a[lx++];
    while(rx<=r)c[idx++]=a[rx++];
    for(int i=l;i<=r;i++)a[i]=c[i];
} 

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i];;
    msort(1,n);
    cout<<ans;
    return 0;
}
2025/7/24 21:38
加载中...