問題一覧 > 通常問題

No.1325 Subsequence Score

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 108
作問者 : tsutaj / テスター : _____TAB_____ monkukui2
13 ProblemId : 3955 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2021-01-08 23:47:15

問題文

長さ N の整数列 A=(a1,a2,,aN) が与えられます。

A からいくつかの要素を取り出し、元の順序を保ったまま並べることで数列 B を作ることを考えます。より具体的には、A から i1,i2,,iM 番目 (1i1<i2<<iMN) の要素を取り出し、B=(b1,b2,,bM)=(ai1,ai2,,aiM) とすることを考えます。

長さ M の数列 B に対する スコア を、i=1M(i×bi) と定義します。B が長さ 0 の列である場合のスコアは 0 です。

B としてあり得るすべての数列に対してスコアを計算し、その総和を 998244353 で割った余りを求めてください。なお、ふたつの数列 (ai1,ai2,,aiM1), (aj1,aj2,,ajM2) は、以下の条件のうち少なくとも一方を満たすときに区別されます。

  • 長さが異なる。すなわち M1M2 である。
  • 長さが等しく、添字列が異なる。すなわち ikjk となるような k (1kM1) が存在する。

入力

N
a1 a2  aN
  • 1N500,000
  • 1ai109 (1iN)
  • 入力はすべて整数で与えられる

出力

答えを 998244353 で割った余りを出力してください。最後に改行してください。

サンプル

サンプル1
入力
3
1 2 3
出力
40

数列 B としてあり得るものは以下の 8 通りです。

数列 スコア
B=() 0
B=(1) 1×1=1
B=(1,2) 1×1+2×2=5
B=(1,2,3) 1×1+2×2+3×3=14
B=(1,3) 1×1+2×3=7
B=(2) 1×2=2
B=(2,3) 1×2+2×3=8
B=(3) 1×3=3

スコアの合計は 40 ですので、40 が答えです。

サンプル2
入力
10
3 1 4 1 5 9 2 6 5 3
出力
70656

最終的な数列が同一であっても、添字列が異なれば区別することに注意してください。

サンプル3
入力
20
107 308 203 269 817 203 123 593 200 252 753 198 200 201 987 222 687 354 901 734
出力
944766948

998244353 で割った余りを出力してください。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。