改了改,样例过了,自己看代码罢
```cpp
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m;
int t[2000005];
int a[1000005];
long long jc[1000005];
const int mod=998244353;
int lowbit(int q){
return q&-q;
}
void one_point(int x,int k){
for(int i=x;i<=n;i+=lowbit(i)){
t[i]+=k;
}
}
int ask_front(int la){
long long sum=0;
for(int i=la;i;i-=lowbit(i)){
sum+=t[i];
}
return sum;
}
signed main(){
cin>>n;
jc[0]=jc[1]=1;
for(int i=1;i<=n;i++){
jc[i]=(jc[i-1]*i)%mod;
one_point(i,1);
}
long long ans=1;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
one_point(a[i],-1);
ans+=((ask_front(a[i]-1))*jc[n-i]%mod)%mod;
ans %= mod;
}
cout<<ans<<"\n";
return 0;
}
```
by Zzzcr @ 2023-07-19 16:54:44
@[Zzzcr](/user/761491) A了 thx
by camellia_smile @ 2023-07-25 09:02:45