この問題は J 問題の部分問題です。 J 問題を AC したコードで正答することができます。
問題文
整数 M、長さ N の整数列C=(C1,C2,…,CN)、およびM×M の整数行列 W が与えられます。各 Ci は 0 以上 M−1 以下の整数です。
Q 個のクエリが与えられるので、順に処理してください。
クエリは以下の 2 種類です。
-
タイプ 1:1 l r xの形式で与えられる。
すべての整数 i=l,l+1,…,r について、Ci を次の値に変更する。
Ci←(Ci+x)modM
-
タイプ 2: 2 l rの形式で与えられる。
次の値を 998244353 で割った余りを出力する。
l≤i<j≤r∑WCi,Cj
制約
- 1≤N≤2×105
- 1≤Q≤104
- 2≤M≤6
- 0≤Ci<M
- 0≤Wi,j<998244353
- タイプ 1 のクエリについて、1≤l≤r≤N
- タイプ 1 のクエリについて、0≤x<M
- タイプ 2 のクエリについて、1≤l≤r≤N
- 入力はすべて整数である
入力
入力は以下の形式で標準入力から与えられます。
出力
タイプ 2 のクエリの個数を q として、q 行出力せよ。 i 行目には i 個目のタイプ 2 のクエリに対する答えを出力せよ。
入力例1
4 3
0 1 2 0
0 1 2
3 4 5
6 7 8
4
2 1 2
1 2 4 1
2 3 3
2 1 4
出力例1
はじめ、数列 C=(0,1,2,0) です。また、整数行列 W は次のようになっています。
W=036147258
1つ目のクエリでは、C1,C2=(0,1)であり、答えはW0,1=1です。
2つ目のクエリでは、区間 [2,4] の各要素に 1 を加え、3 で割った余りに置き換えます。よって、数列 C=(0,2,0,1) となります。
3つ目のクエリでは、区間 [3,3] に含まれる要素は 1 個だけです。この区間からは、i<j を満たす 2 つの添字を選ぶことができません。したがって、答えは 0 です。