听取蛙声一片
  • 板块P1908 逆序对
  • 楼主zhongyuZY
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/10/15 11:35
  • 上次更新2023/11/2 13:42:30
查看原帖
听取蛙声一片
1051111
zhongyuZY楼主2023/10/15 11:35
#include<bits/stdc++.h>
using namespace std;
long long n,k;
int a[500005],b[500005];
long long f[16777216],ans;
void search_hh(int l,int r){
	int i,j,k;
	if(l>=r)return;
	int mid=(l+r)/2;
	search_hh(l,mid);
	search_hh(mid+1,r);
	for(int i=l;i<=r;i++)
	b[i]=a[i];
	i=l,j=mid+1;
	for(int k=l;k<=r;k++){
		if(i<=mid&&((j>r)||b[i]<b[j]))a[k]=b[i++];
		else{
		a[k]=b[j++];
		ans=ans+mid-i+1;	
		}
	}
}
int main(){
	int i,j,n;
	scanf("%d",&n);
	for(int i=0;i<n;i++)
		scanf("%d",&a[i]);	
	search_hh(0,n-1);
	printf("%lld",ans);
	return 0;
}
感谢大佬们!!!orz
2023/10/15 11:35
加载中...