为何不对
查看原帖
为何不对
773533
FXHai楼主2024/9/3 21:19
#include<iostream>
using namespace std;
long long n,arr[100005],ans=0;
void g(int l,int mid,int r){
	int i=l,j=mid,s[100005],idx=0;
	while(i<mid&&j<r){
		if(arr[i]<arr[j]){
			s[idx++]=arr[i++];
		}else{
			ans+=mid-i;
			s[idx++]=arr[j++];
		}
	}
	while(i<mid){
		s[idx++]=arr[i++];
	}while(j<r){
		s[idx++]=arr[j++];
	}
	for(int i=0;i<idx;i++){
		arr[l+i]=s[i];
	}
}
void gb(int l,int r){
	if(r-l<=1){
		return ;
	}
	int mid=(l+r)/2;
	gb(l,mid);
	gb(mid,r);
	g(l,mid,r);
}
int main(){
	cin>>n;
	for(int i=n-1;i>=0;i--){
		cin>>arr[i];
	}
	gb(0,n);
	cout<<ans;
}
2024/9/3 21:19
加载中...