蒟蒻求助!!!
  • 板块P1908 逆序对
  • 楼主rabbitdit
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/2/4 17:08
  • 上次更新2023/11/5 03:45:44
查看原帖
蒟蒻求助!!!
413801
rabbitdit楼主2021/2/4 17:08
#include<bits/stdc++.h>
using namespace std;
int n,a1[1000005],num[1000005];
int tol=0;
void gb(int l,int r) {
	if(r==l+1 ||r==l) {
		if(num[r]<num[l]) {
			swap(num[r],num[l]);
			tol++;
		}
	} else {
		gb(l,(l+r)/2);
		gb((l+r)/2+1,r);
		int L=l,R=(l+r)/2+1;
		for(int i=l; i<=r; i++) {
			if((num[L]<num[R] && L<=(l+r)/2)||R==r+1) {
				a1[i]=num[L];
				L++;
			} else {
				a1[i]=num[R];
				R++;
				tol+=(l+r)/2-L;
			}
		}
		for(int i=1; i<=r; i++) {
			num[i]=a1[i];
		}
	}
}
int main() {
	cin>>n;
	for(int i=1; i<=n; i++) {
		cin>>num[i];
	}
	gb(1,n);
	cout<<tol;
}

照着题解的思路写的,请问为什么会错呢

2021/2/4 17:08
加载中...