为什么不对啊?
查看原帖
为什么不对啊?
1372344
ZJY1207楼主2024/10/17 20:57

归并排序求逆序对

#include<bits/stdc++.h>
using namespace std;
long long a[1000000],p[2000000],ans;
void msort(int l,int r){
    if(l==r) return;
    int mid=l+(r-l)/2;
    msort(l,mid);
    msort(mid+1,r);
    int i=l,j=mid+1,k=0;
    while(j<=r&&i<=mid){
        if(a[i]<=a[j]){
            p[k]=a[i];
            k++;
            i++;
        } else{
            p[k]=a[j];
            j++;
            k++;
            ans+=mid-i+1;
        }
    }
}
int main()
{
    int n;
    cin>>n;
    for(int i=n;i;i--) cin>>a[i];
    msort(1,n);
    cout<<ans;
}
大佬求调
2024/10/17 20:57
加载中...