rabbitdit @ 2021-02-04 17:08:35
#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;
}
照着题解的思路写的,请问为什么会错呢