代码如下
#include <bits/stdc++.h>
using namespace std;
int n,a[2510],val[800010],ch[800010][2],rt,totut,ans;
void modify(int &u,int ul,int ur,int p,int k){
if(u==0) u=++totut;
if(ul==ur) return val[u]+=k,void();
int um=ul+(ur-ul)/2;
if(p<=um) modify(ch[u][0],ul,um,p,k);
else modify(ch[u][1],um+1,ur,p,k);
val[u]=val[ch[u][0]]+val[ch[u][1]];
}
int query(int u,int ul,int ur,int ql,int qr){
if(u==0) return 0;
if(ql<=ul&&ur<=qr) return val[u];
int ans=0,um=ul+(ur-ul)/2;
if(ql<=um) ans+=query(ch[u][0],ul,um,ql,qr);
if(um<qr) ans+=query(ch[u][1],um+1,ur,ql,qr);
return ans;
}
int main(){
cin>>n;
for(int i=1;i<=n;++i) cin>>a[i];
for(int i=1;i<=n;++i){
ans+=query(rt,1,1e9,a[i]+1,1e9);
modify(rt,1,1e9,a[i],1);
}
cout<<ans<<endl;
return 0;
}