为何不对
查看原帖
为何不对
1200191
封禁用户楼主2024/9/22 11:58
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int M=5e5+5;
ll n;
ll a[M],temp[M];
ll ans=0;
void mSort(ll l,ll mid,ll r) {
	if(l>=r)return ;
	ll i=l,j=mid,c=0;
	while(i<mid && j<r) {
		if(a[i]<a[j]) {
			temp[++c]=a[i++];
		} else {
			temp[++c]=a[j++];
			ans+=mid-i;
		}
	}
	while(i<mid) {
		temp[++c]=a[i++];
	}
	while(j<r) {
		temp[++c]=a[j++];
	}
	for(i=0; i<c; i++) {
		a[l+i]=temp[i];
	}
}
void fun(int l,int r) {
	if(r-l<=1) {
		return ;
	}
	int mid=(l+r)/2;
	fun(l,mid);
	fun(mid,r);
	mSort(l,mid,r);
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n;
	for(ll i=n-1; i>=0; i--) {
		cin>>a[i];
	}
	fun(0,n);
	cout<<ans<<"\n";
	return 0;
}

2024/9/22 11:58
加载中...