0pts求助
查看原帖
0pts求助
373198
WhileTrueRP楼主2023/9/24 16:06
#include<iostream>
#include<cstdio>
#define int long long
using namespace std;
const int N = 5e5+5;
int a[N],b[N];
long long ans = 0;
void sort(int l,int r){
	if(l == r){
		return;
	}
	int mid = (l+r)/2;
	sort(l,mid);
	sort(mid+1,r);
	int i = l,j = mid+1;
	int t = l;
	while(i <= mid && j <= r){
		if(a[i] > a[j]){
			ans += mid-i+1;
			b[t++] = a[j];
			j++;
		}else{
			b[t++] = a[i];
			i++;
		}
	}
	while(i <= mid){
		b[t++] = a[i];
		i++;
	}
	while(j <= r){
		b[t++] = b[j];
		j++;
	}
	for(int i=l;i<=r;i++){
		a[i] = b[i];
	}
	return;
}
signed main(){
	int n;
	scanf("%lld",&n);
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i]);
	}
	sort(1,n);
	printf("%lld",ans);
}
2023/9/24 16:06
加载中...