代码求调 wa19 wa20
查看原帖
代码求调 wa19 wa20
370001
Belmaxi楼主2023/4/10 09:31
/**
 * @copyright: CopyRight
 * @author: Belmaxi
 * @date: 2023-04-05 18:45:38
 * @language: C++
 **/
#include<bits/stdc++.h>
#define int long long
#define ull unsigned long long
#define rd(x) scanf("%lld",&x)
#define FOR(i,x,y,z) for(auto i=x;i<=y;i+=z)
#define pii pair<int,int>
#define pll pair<ll,ll>
#define udm unordered_map

using namespace std;
const int mod = 998244353;
int pre[1000001];
struct BIT{
    int c[1000001];
    int lowbit(int x){
        return x&-x;
    }
    void add(int x,int val){
        for(int i=x;i<=1000000;i+=lowbit(i)){
            c[i]+=val;
        }
    }
    int sum(int x){
        int ans=0;
        for(int i=x;i>0;i-=lowbit(i)){
            ans+=c[i];
        }
        return ans;
    }
};
void pree(){
    pre[1]=1;
    for(int i=2;i<=1000000;i++){
        pre[i] = (pre[i-1]*i) % mod;
    }
}
void solve(){
    pree();
    int n;
    rd(n);
    int arr[n+1];
    int ans=0;
    BIT a;
    for(int i=1;i<=n;i++){
        rd(arr[i]);
        ans+=((arr[i]-a.sum(arr[i]-1)-1)*pre[n-i] %mod);
        a.add(arr[i],1);
        ans%=mod;
    }
    cout<<(ans+1)%mod;
	return;
}
signed main(){
	int T=1;
//	rd(T);
	while(T--){
		solve();
	}
	return 0;
}
2023/4/10 09:31
加载中...