到底哪里错了???每次自测一如既往的对,每次提交一如既往的错
求各位大佬帮忙看看
#include<bits/stdc++.h>
using namespace std;
long long ans;
long long a[20001],t1[100001],t2[100001];
long long t,n;
void inline r(long long &x)
{
x=0;
int f=1;
char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-')
f=-1;
c=getchar();
}
while(c>='0'&&c<='9')
{
x=(x<<1)+(x<<3)+(c^48);
c=getchar();
}
x=x*f;
}
void inline xgt21(int x)
{
while(x<=n)
{
t2[x]++;
x+=x&-x;
}
}
void inline xgt22(long long x)
{
while(x<=n)
{
t2[x]--;
x+=x&-x;
}
}
void inline xgt1(long long x)
{
while(x<=n)
{
t1[x]++;
x+=x&-x;
}
}
long long inline cxt1(long long x)
{
long long ans=0;
while(x>0)
{
ans+=t1[x];
x-=x&-x;
}
return ans;
}
long long inline cxt2(long long x)
{
long long ans=0;
while(x>0)
{
ans+=t2[x];
x-=x&-x;
}
return ans;
}
int main()
{
r(t);r(n);
while(t--)
{
ans=0;
memset(a,0,sizeof(a));
memset(t1,0,sizeof(t1));
memset(t2,0,sizeof(t2));
for(int i=1;i<=n;i++)
r(a[i]);
for(int i=2;i<=n;i++)
xgt21(a[i]);
for(int i=2;i<=n;i++)
{
xgt1(a[i-1]);
xgt22(a[i]);
ans+=cxt1(a[i]-1)*(cxt2(n)-cxt2(a[i]-1))+cxt2(a[i]-1)*(cxt1(n)-cxt1(a[i]-1));
}
printf("%lld\n",ans);
if(t)
r(n);
}
}