求助
  • 板块学术版
  • 楼主lishitang
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/8/21 09:20
  • 上次更新2023/11/3 02:19:43
查看原帖
求助
736900
lishitang楼主2023/8/21 09:20
#include<iostream>
#define ll long long 
using namespace std;

inline int read(){
	int x=0,f=1;
	char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f*=-1;c=getchar();};
	while(c<='9'&&c>='0'){x=(x<<3)+(x<<1)+(c^48);c=getchar();};
	return x*f;
}

int n,a[500010],c[500010];
ll ans;
void msort(int l,int r){
	if(l==r)return ;
	int mid=(l+r)>>1,i=l,j=mid+1,k=l;
	msort(l,mid),msort(mid+1,r);
	while(i<=mid&&j<=r)
		if(a[i]<=a[j])
			c[k++]=a[i++];
		else
			c[k++]=a[j++],ans+=mid-i+1;
	while(i<=mid)
		c[k++]=a[i++];
	while(j<=r)
		c[k++]=a[j++];
	for(int p=l;p<=r;p++)a[p]=c[p];
}
int main(){
	int t;
	t=read();
	while(t--){
		ans=0;
		n=read();
		for(int i=1;i<=n;i++)a[i]=read();
		msort(1,n);
		cout<<n<<endl;
		printf("%lld\n",ans);
		cout<<114514<<endl;
	}
	return 0;
}

t79958

2023/8/21 09:20
加载中...