#include#include #include using namespace std;int n,c[20000+5],d[20000+5],a[20000+5],p[100000+5];int sum(int x){ int ret=0; while(x>0) { ret+=p[x]; x-=x&(-x); } return ret;}void add(int x){ while(x<100000+5) { p[x]+=1; x+=x&(-x); }}int main(){ int _,i,j; scanf("%d",&_); while(_--) { scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&a[i]); } memset(p,0,sizeof(p)); for(i=1;i<=n;i++) { add(a[i]); c[i]=sum(a[i]-1); } memset(p,0,sizeof(p)); for(i=n;i>=1;i--) { add(a[i]); d[i]=sum(a[i]-1); } long long int ans=0; for(i=1;i<=n;i++) { ans+=c[i]*(n-i-d[i])+d[i]*(i-c[i]-1); } printf("%lld\n",ans); } return 0;}
版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/