谁能帮我康康bug
  • 板块P1908 逆序对
  • 楼主lemon8932
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/2 14:36
  • 上次更新2024/8/2 15:27:36
查看原帖
谁能帮我康康bug
1091106
lemon8932楼主2024/8/2 14:36
#include<bits/stdc++.h>
using namespace std;
int a[500001],t[500001];
long long ans;
void merge(int l,int r)
{
	int j,i,mid,tmp;
	mid=(l+r)/2;
	i=l;
	j=mid+1;
	tmp=l;
	while(i<=mid&&j<=r)
	{
		if(a[i]<=a[j])t[tmp++]=a[i++];
		else
		{
			t[tmp++]=a[j++];
			ans+=mid-i+1;

		}
		
		while(i<=mid)t[tmp++]=a[i++];
		while(j<=r)t[tmp++]=a[j++];
		for(i=l;i<=r;i++)
		{
			a[i]=t[i];
		}
	}
}
void mergesort(int l,int r)
{
	if(l<r){
	int mid;
	mid=(l+r)/2;
	mergesort(l,mid);
	mergesort(mid+1,r);
	merge(l,r);
}
}
int main()
{
	int n,i;
	cin>>n;
	for(i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	mergesort(1,n);
	printf("%lld",ans);
}
2024/8/2 14:36
加载中...