为什么会UKE啊?
查看原帖
为什么会UKE啊?
186546
lwyznoip楼主2024/8/7 10:37
#include <iostream>
using namespace std;
typedef long long LL;
const int N = 500010;
int n;
int a[N],tmp[N];
LL merge_sort (int a[],int l,int r) {
    if (l == r) return 0;
    int mid = l + r >> 1;
    LL ans = merge_sort (a,l,mid) + merge_sort (a,mid + 1,r);
    int i = l,j = mid + 1,k = 1;
    while (i <= mid && j <= r) {
        if (a[i] <= a[j]) tmp[k++] = a[i++];
        else tmp[k++] = a[j++],ans += mid - i + 1;
    }
    while (i <= mid) tmp[k++] = a[i++];
    while (j <= r) tmp[k++] = a[j++];
    for (int i = 1,j = l;j <= r;i++,j++) a[j] = tmp[i];
    return ans;
}
int main () {
    int T;
    cin >> T;
while (T --){
cin >> n;
    for (int i = 1;i <= n;i++)  cin>>a[i];
    cout << merge_sort (a,1,n) << endl;

}
    
}


2024/8/7 10:37
加载中...