玄学RE
查看原帖
玄学RE
263469
Ink_Bottle楼主2020/7/15 16:56

求大佬帮忙看一下

#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;
}

//帮助者就给他看妹子

2020/7/15 16:56
加载中...