求改,玄关
  • 板块学术版
  • 楼主lzm13933871057
  • 当前回复10
  • 已保存回复10
  • 发布时间2025/2/7 09:49
  • 上次更新2025/2/7 11:58:28
查看原帖
求改,玄关
1499401
lzm13933871057楼主2025/2/7 09:49
#include<bits/stdc++.h> 
using namespace std;
long long a[500010],r[500010],n,ans;
int msort(int s,int t){
	if(s==t)
	    return 1;
	else{
		int mid=(s+t)/2;
		 msort(s,mid);
		 msort(mid+1,t);
		 int i=s,j=mid+1,k=s;
		 while(i<=mid&&j<=t){
		 	if(a[i]<=a[j]){
		 		r[k]=a[i];k++;i++;
			}
			else{
				r[k]=a[j];k++;j++;
				ans+=mid-i+1;
			}
		}
		while(i<=mid){
			r[k]=a[i];k++;i++;
		}
		while(j<=t){
			r[k]=a[j];k++;j++;
		}
		for(int i=s;i<=t;i++)
		    a[i]=r[i];
	}
}
int main(){
	scanf("%lld",&n);
	for(int i=1;i<=n;i++)
	    scanf("%lld",a[i]);
	msort(1,n);
	printf("%lld",&ans);
	return 0;
}

p1908

2025/2/7 09:49
加载中...