提交时间:2024-03-09 10:50:29

运行 ID: 136580

#include<iostream> #include<cstring> using namespace std; int n; long long a[100001],f[1000001],sum[100001]; int lowbit(int n){ return n&-n; } void modi(int id){ while(id<=1e6){ f[id]++; id+=lowbit(id); } return ; } int get(int id){ int ans=0; while(id>0){ ans+=f[id]; id-=lowbit(id); } return ans; } int main(){ cin>>n; for(int i=1;i<=n;i++){ scanf("%d",&a[i]); a[i]++; modi(a[i]); sum[i]=i-get(a[i]); } memset(f,0,sizeof(f)); for(int i=n;i>0;i--){ modi(a[i]); sum[i]+=get(a[i]-1); } long long ans=0; for(int i=1;i<=n;i++){ ans+=(1+sum[i])*sum[i]/2; } cout<<ans<<endl; return 0; }