Submission #47041332


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;

#define rep(i,n) for(ll i=0;i<n;++i)
#define rrep(i,n) for(ll i=n-1;i>=0;--i)
#define FOR(i,s,e) for(ll i=s;i<=e;++i)
#define FFOR(i,s,e) for(ll i=s;i>=e;--i)

#define yesno(flg) if(flg){cout<<"Yes"<<endl;}else{cout<<"No"<<endl;}
#define ALL(a) (a).begin(),(a).end()
#define mp make_pair
#define pb push_back
#define vl vector<ll>
#define vs vector<string>
#define so(a) sort(a.begin(),a.end())

#define fi first
#define se second
#define print(a) cout<<a<<endl
#define ssize(a) (ll)(a.size())

#define MAX_N 1002
#define i197 1000000007
template<class T>bool chmax(T &a, const T &b) { if (a<b) { a=b; return 1; } return 0; }
template<class T>bool chmin(T &a, const T &b) { if (b<a) { a=b; return 1; } return 0; }

typedef pair<int,int> Pi;
typedef pair<ll, ll> P2;
typedef pair<P2,ll> P3;
typedef pair<P2,P2> P4;

const ll INF=1000000000000000001;
// mod. m での a の逆元 a^{-1} を計算する
long long modinv(long long a, long long m) {
    long long b = m, u = 1, v = 0;
    while (b) {
        long long t = a / b;
        a -= t * b; swap(a, b);
        u -= t * v; swap(u, v);
    }
    u %= m;
    if (u < 0) u += m;
    return u;
}
ll dp[300005][2];

int main(){

	ios::sync_with_stdio(0);
	cin.tie(0);

	ll n;
	cin>>n;

	vl a(n+1);
	rep(i,n)cin>>a[i+1];

	ll r=998244353;
	ll mo=modinv(n,r);
	ll ans=0;

	FOR(i,1,n){
		dp[i][1]+=(a[i]*mo)%r;
		dp[i][1]%=r;
		dp[i][0]+=mo;
		dp[i][0]%=r;

		dp[i][1]+=(dp[i-1][0]*mo)%r*a[i]%r;
		dp[i][1]%=r;
		dp[i][1]+=(dp[i-1][1]*mo)%r;
		dp[i][1]%=r;

		dp[i][0]+=dp[i-1][0]*mo%r;
		dp[i][0]%=r;
		ans+=(dp[i][1]*mo)%r*i%r;
		ans%=r;

		dp[i][1]+=dp[i-1][1];
		dp[i][1]%=r;
		dp[i][0]+=dp[i-1][0];
		dp[i][0]%=r;
	}
	print(ans);





	return 0;
}








Submission Info

Submission Time
Task E - Revenge of "The Salary of AtCoder Inc."
User akarinkof
Language C++ 20 (gcc 12.2)
Score 450
Code Size 1878 Byte
Status AC
Exec Time 25 ms
Memory 10256 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 450 / 450
Status
AC × 3
AC × 30
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 3628 KiB
sample_02.txt AC 1 ms 3500 KiB
sample_03.txt AC 1 ms 3496 KiB
test_01.txt AC 1 ms 3528 KiB
test_02.txt AC 1 ms 3496 KiB
test_03.txt AC 6 ms 4692 KiB
test_04.txt AC 1 ms 3468 KiB
test_05.txt AC 22 ms 9184 KiB
test_06.txt AC 3 ms 3844 KiB
test_07.txt AC 16 ms 7580 KiB
test_08.txt AC 1 ms 3704 KiB
test_09.txt AC 12 ms 6124 KiB
test_10.txt AC 6 ms 4512 KiB
test_11.txt AC 6 ms 4612 KiB
test_12.txt AC 17 ms 7844 KiB
test_13.txt AC 22 ms 9256 KiB
test_14.txt AC 6 ms 4648 KiB
test_15.txt AC 21 ms 8980 KiB
test_16.txt AC 3 ms 3824 KiB
test_17.txt AC 23 ms 9912 KiB
test_18.txt AC 25 ms 10152 KiB
test_19.txt AC 10 ms 5768 KiB
test_20.txt AC 7 ms 5020 KiB
test_21.txt AC 23 ms 9376 KiB
test_22.txt AC 23 ms 9816 KiB
test_23.txt AC 24 ms 10256 KiB
test_24.txt AC 25 ms 10172 KiB
test_25.txt AC 25 ms 10100 KiB
test_26.txt AC 24 ms 10096 KiB
test_27.txt AC 25 ms 10164 KiB