求助P1908,玄关
  • 板块P1908 逆序对
  • 楼主xQWQx
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/11/9 20:23
  • 上次更新2023/11/9 21:40:42
查看原帖
求助P1908,玄关
1024387
xQWQx楼主2023/11/9 20:23

关注小号(C112345565_)给

回复可能会迟一些

这里是记录

以下是代码:

#include<bits/stdc++.h>
using namespace std;
long long ans=0;
int a[500005]={0},b[500005]={0};
void msort(int a[],int l,int mid,int r)
{
	int i=l;
	int j=mid+1;
	int k=l;
	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 m=l;m<=r;++m) a[m]=b[m];
}
void mesort(int a[],int l,int r)
{
	if(l>=r) return ;
	int mid=l+(r-l)/2;
	mesort(a,l,mid);
	mesort(a,mid+1,r);
	msort(a,l,mid,r);
}
int main() {
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;++i) scanf("%d",&a[i]);
    mesort(a,0,n-1);
	printf("%d",ans);
}

另:蒟蒻下载了一个数据等一下发出来,太大力

2023/11/9 20:23
加载中...