我的代码和第一篇题解基本一样啊,为啥我会RE?
#include<bits/stdc++.h>
//#include<windows.h>
#define int unsigned long long int
using namespace std;
int n,A[200010],B[200010],ans;
vector<int>C(1e7+10),D(1e7+10);
#define I vector<int>
inline void add(I& c,int x,int y){
for(;x<=n;x+=x&-x){
c[x]+=y;
}
}
inline int query(I &c,int x){
int res=0;
for(;x>0;x-=x&-x){
res+=c[x];
}
return res;
}
inline int query(I &c,int x,int y){return query(c,y)-query(c,x-1);}
signed main(){
//freopen("r","test.txt",stdin);
scanf("%lld",&n);
for(int i=1;i<=n;i++) scanf("%lld",&A[i]),B[i]=A[i];
sort(B+1,B+n+1);
for(int i=1;i<=n;i++)A[i]=lower_bound(B+1,B+n+1,A[i])-B;
//
for(int i=1;i<=n;i++){
ans+=query(D,A[i]+1,n);
add(D,A[i],query(C,A[i]+1,n));
add(C,A[i],1);
}
printf("%lld",ans);
//while(1);
return 0;
}