只有35分!
查看原帖
只有35分!
1011579
jess1ca1o0g3楼主2023/8/18 10:42
#include<cstdio>
using namespace std;
int n,a[10000005],b[10000005];
long long ans=0;

void ms(int l,int r){
	if(l>=r) return;
	int mid=(l+r)/2,i=l,j=mid+1,k=l;
	ms(l,mid);
	ms(mid+1,r);
	while(i<=mid&&j<=r){
		if(a[i]<a[j])
			b[k++]=a[i++];
		else{
			b[k++]=a[j++];
			ans+=mid-i+1;
		}
	}
	while(i<=mid) b[k++]=a[i++];
	while(j<=r) b[k++]=a[j++];
	for(int p=l;p<=r;p++)
		a[p]=b[p];
}

int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	ms(1,n);
	printf("%lld",ans);
	return 0;
}

找不出来问题,求解

2023/8/18 10:42
加载中...