50分求助!
查看原帖
50分求助!
1312367
lucus_Fu0202楼主2024/5/4 15:10
#include<bits/stdc++.h>
using namespace std;
long long r[100001],a[100001],n,ans;
void msort(int s , int t){
    if(s == t){
        return;
    }
    int mid = (s + t) / 2;
    msort(s , mid);
    msort(mid + 1 , t);
    int i = s , j = mid + 1 , k = s;
    while(i <= mid && j <= t){
        if(a[i] <= a[j]){
            r[k] = a[i];
            k++;
            i++;
        }else{
            r[k] = a[j];
            k++;
            j++;
            ans += mid - i + 1;
        }
    }
    while(i <= mid){
        r[k] = a[i];
        k++;
        i++;
    }
    while(j <= t){
        r[k] = a[j];
        k++;
        j++;
    }
    for(int i = s ; i <= t ; i++){
        a[i] = r[i];
    }
}
int main(){
    cin>>n;
    for(int i = 1 ; i <= n ; i++){
        cin>>a[i];
    }
    msort(1 , n);
    cout<<ans;
    return 0;
}
2024/5/4 15:10
加载中...