10pts求调
查看原帖
10pts求调
1121718
Nk96321楼主2024/6/5 14:44
#include<iostream>
#include<cstdio>
using namespace std;
int n;
int ans;
#define lowbit(x) x&(-x)
const int mod=998244353;
const int N=1e8;
int jc[N];
int a[N];
int t[N];
inline void add(int x,int k)
{
	for(int i=x;i<=n;i+=lowbit(i))
	t[i]+=k;
}
inline int query(int x)
{
	int p=0;
	for(int i=x;i;i-=lowbit(i))
	p+=t[i];
	return p;
}
int main()
{
//freopen("a.in","r",stdin);
//	freopen("a.out","w",stdout);
	cin>>n;
	jc[0]=1;
	for(int i=1;i<=n;++i)
	jc[i]=(jc[i-1]*i)%mod;
	for(int i=1;i<=n;++i)
	{
		scanf("%d",&a[i]);
		add(i,1);
	}
	for(int i=1;i<=n;++i)
	{
		ans=(ans+((query(a[i])-1)*jc[n-i])%mod)%mod;
		add(a[i],-1);
	}
	ans++;
	cout<<ans;
	return 0;
}
2024/6/5 14:44
加载中...