求大佬帮忙看一下
#include<bits/stdc++.h>
#define mod 998244353
#define ll long long
using namespace std;
ll n,c[1000001];
ll ans,fac[1000001];
ll read()
{
int k,f=1;
char c;
while((c=getchar())<'0'||c>'9')
if(c='-') f=-1;
k=c-'0';
while((c=getchar())>='0'&&c<='9') k=k*10+c-'0';
return k*f;
}
int lowbit(int a)
{
return a&(-a);
}
int add(int a,int b)
{
for(int i=a;i<=n;i+=lowbit(i)) c[i]+=b;
}
int sum(int k)
{
int cnt=0;
for(int i=k;i!=0;i-=lowbit(i)) cnt+=c[i];
return cnt;
}
int main()
{
n=read();
fac[0]=1;
for(int i=1;i<=n;i++)
{
fac[i]=fac[i-1]*i%mod;
add(i,1);
}
for(int i=1;i<=n;i++)
{
int x;
x=read();
ans+=(sum(x)-1)*fac[n-i];
ans%=mod;
add(x,-1);
}
cout << ans+1 << endl;
return 0;
}
//帮助者就给他看妹子