Please sign in first.
B - Heavy Rotation
Editorial
/
/
Time Limit: 2 sec / Memory Limit: 1024 MiB
配点 : 100 点
問題文
1,2,\ldots ,N の番号がついた N 個の荷物が左右一列に並んで置かれています。はじめ、荷物 i は左から i 番目の位置に置かれています。また、各荷物には重さが設定されており、荷物 i の重さは A_i です。
あなたは、この荷物の列に対して、次の一連の操作を 0 回以上好きな回数行うことができます。
- 1 \le L \lt R \le N を満たす整数組 (L,R) であって、左から L,L+1, \ldots ,R 番目の荷物の重さの総和が K 以上であるようなものを 1 つ選ぶ。
- 左から L,L+1, \ldots ,R 番目の荷物を、左に巡回シフトする。すなわち、左から L 番目の位置に置いてあった荷物は左から R 番目の位置にくるように、左から L+1,\ldots ,R 番目の位置に置いてあった荷物は、それぞれ左から L,\ldots ,R-1 番目の位置にくるように、荷物を移動させる。
すべての操作が終わった時点での荷物の並び方としてありうるものの個数を 998244353 で割ったあまりを求めてください。
制約
- 入力はすべて整数
- 2 \le N \le 2 \times 10^5
- 1 \le K \le 10^{14}
- 1 \le A_i \le 10^8
入力
入力は以下の形式で与えられる。
N K A_1 A_2 \ldots A_N
出力
答えを出力せよ。
入力例 1
4 7 1 2 2 3
出力例 1
12
最初の状態において、左から 2,3,4 番目の荷物の重さの総和は 2+2+3=7 \ge K=7 なので、最初の操作として (L,R)=(2,4) を選ぶことができます。この操作の後、荷物の番号は左から順に 1,3,4,2 となります。
すべての操作が終わった時点での荷物の並び方としてありうるものは 12 通りとなります。
なお、荷物の重さが同じでも、荷物どうしは番号によって区別されることに注意してください。このケースの場合、荷物の番号が左から順に 1,2,3,4 となる並び方と、1,3,2,4 となる並び方は、別の並び方として扱われます。
入力例 2
2 100 1 1
出力例 2
1
操作が 1 回も行えない場合もあります。
入力例 3
20 1 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
出力例 3
401576539
998244353 で割ったあまりを答えてください。