No.2571 列辞書順列
レベル : / 実行時間制限 : 1ケース 3.000秒 / メモリ制限
: 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 15
作問者 : Magentor / テスター : 👑 AngrySadEight ragna
タグ : / 解いたユーザー数 15
作問者 : Magentor / テスター : 👑 AngrySadEight ragna
問題文最終更新日: 2023-12-08 20:32:56
問題文
整数列の列 $S$ があります。$S=(S_{1},S_{2},\dots,S_{|S|})$ には長さが $1$ 以上 $K$ 以下ですべての要素が $1$ 以上 $M$ 以下である整数列全てが辞書順に並んでいます。
厳密には、$S$ は以下の条件を満たす整数列の列です。(このようなものは一意に定まることが証明できます。)
- $T$ を長さが $1$ 以上 $K$ 以下ですべての要素が $1$ 以上 $M$ 以下である整数列とするとき、$S_{i}=T$ となる正整数 $i$ はちょうど $1$ つである。
- $i<j$ であるとき、$S_{i}$ は $S_{j}$ よりも辞書順で小さい。
全ての要素が $1$ 以上 $M$ 以下である整数列 $A=(A_1,A_2,\dots,A_N)$ が与えられるので、以下で説明される $Q$ 個のクエリに答えてください。
クエリは以下の $2$ 種類のうちのいずれかです。
1 l r
: 整数 $l,r$ が与えられる。$B = (A_{l},A_{l+1},\dots,A_{r})$ としたとき、$S_{i}=B$ を満たす整数 $i$ の値を $998244353$ で割った余りを出力する。2 x y
: $A_x$ の値を $y$ に変更する。
数列の辞書順とは?
- $|A|<|B|$ かつ $(A_1,A_2,\dots,A_{|A|})=(B_1,B_2,\dots,B_{|A|})$ である。
- ある整数 $1 \leq i \leq \min(|A|,|B|)$ が存在して、以下の $2$ つが成り立つ。
- $(A_1,A_2,\dots,A_{i-1})=(B_1,B_2,\dots,B_{i-1})$
- $A_i<B_i$
制約
- 入力は全て整数である
- $1 \leq N,M \leq 10^5$
- $N \leq K \leq 10^9$
- $1 \leq Q \leq 10^5$
- $1 \leq A_i \leq M$
- $1$ 番目の形式のクエリにおいて、$1 \leq l \leq r \leq N$
- $2$ 番目の形式のクエリにおいて、$1 \leq x \leq N , 1 \leq y \leq M$
- $1$ 番目の形式のクエリが $1$ つ以上存在する
入力
入力は以下の形式で標準入力から与えられる。
$N\ M\ K\ Q$ $A_1\ A_2\ \dots\ A_N$ $\text{query}_1$ $\text{query}_2$ $\vdots$ $\text{query}_Q$
ただし、$\text{query}_i$ は $i$ 番目のクエリを表しており、以下のいずれかの形式で与えられる。
$1\ l\ r$
$2\ x\ y$
出力
$1$ 番目のクエリの回数を $q$ 回として $q$ 行に出力せよ。$i$ 行目には、$i$ 個目の $1$ 番目のクエリに対する答えを出力せよ。
サンプル
サンプル1
入力
5 2 5 4 1 1 1 1 2 1 1 5 2 3 2 1 1 5 1 2 4
出力
6 13 18
- $1$ 番目のクエリにおいて、$B = (1,1,1,1,2)$ です。また、$S = ((1),(1,1),(1,1,1),(1,1,1,1),(1,1,1,1,1),(1,1,1,1,2), \dots )$ となります。よって $6$ を出力します。
サンプル2
入力
7 8 9 10 1 8 4 6 3 6 4 1 1 7 1 2 7 1 3 5 2 7 2 2 3 5 1 3 7 1 1 4 2 1 1 2 5 6 1 4 7
出力
17875752 143005991 70104797 89470686 18162836 109388948
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。