TSG LIVE! 16 プログラミングコンテスト
コンテスト日時
2026/05/17 (Su) 10:30 - 12:10

F - TSG String

Darjeeling
4
s
1024
MB
500

問題文

英大文字からなる文字列 $S$, $T$ が与えられます。
$0 \leq l \lt r \leq |S|$ について $f(l, r)$ を次のように定義します。

$f(l, r)=( S[l, r)$ に部分列として含まれる $T$ の個数 $)$

ここでは部分列は、文字列として同じであっても取り出す位置が異なるならば異なる部分列として区別します。

$Q$ 個のクエリが与えられるので、順に処理してください。
$i$ 番目のクエリでは整数 $x_i$ と 英大文字 $c_i$ が与えられるので 、 $S$ の $x$ 文字目を $c$ に更新しその後 $\sum_{0 \leq l \lt r \leq |S|} f(l, r)$ を $998244353$ で割った余りを求めて下さい。

部分列とは 文字列の部分列とは、文字列から $0$ 個以上の位置の文字を取り除いた後、残りの文字を元の順序で連結して得られる文字列のことを言います。 例えば、 a , pe , appleapple の部分列ですが、 ea , hoge は違います。

制約

  • $S$ , $T$ は英大文字のみからなる
  • $1 \leq |S| \leq 2 \times 10^5$
  • $1 \leq |T| \leq 5$
  • $Q$ は整数で $1 \leq Q \leq 10^5$
  • 各クエリ x c について、 $x$ は整数で $1 \leq x \leq |S|$、 $c$ は英大文字

入力

入力は以下の形式で標準入力から与えられる。

$S$
$T$
$Q$
$x_1\ c_i$
$\ \ \ \vdots$
$x_Q\ c_Q$

出力

答えを $Q$ 行に出力せよ。

入力例 1
TTTGG TSG 2 3 S 2 S
出力例 1
9 6
入力例 2
AAAA A 1 1 A
出力例 2
20
提出
C++23 (g++ 12.2.0)