atcoder#ABC285F. [ABC285F] Substring of Sorted String

[ABC285F] Substring of Sorted String

配点 : 500500

問題文

英小文字からなる長さ NN の文字列 SSQQ 個のクエリが与えられます。クエリを順に処理してください。

クエリは以下の 22 種類です。

  • 1 x cSSxx 文字目を文字 cc に置き換える
  • 2 l rSS を文字の昇順に並び替えて得られる文字列を TT とする。SSll 文字目から rr 文字目までからなる文字列が TT の部分文字列であるとき Yes、部分文字列でないとき No を出力する
部分文字列とは? S部分文字列とは、S の先頭から 0 文字以上、末尾から 0 文字以上削除して得られる文字列のことをいいます。 例えば、ababc の部分文字列ですが、acabc の部分文字列ではありません。

制約

  • 1N1051\leq N \leq 10^5
  • SS は英小文字からなる長さ NN の文字列
  • 1Q1051 \leq Q \leq 10^5
  • 11 種類目のクエリにおいて、1xN1 \leq x \leq N
  • 11 種類目のクエリにおいて、cc は英小文字
  • 22 種類目のクエリにおいて、1lrN1 \leq l \leq r \leq N

入力

入力は以下の形式で標準入力から与えられる。ただし、queryi\text{query}_iii 番目のクエリを表す。

NN

SS

QQ

query1\text{query}_1

query2\text{query}_2

\vdots

queryQ\text{query}_Q

出力

問題文中の指示に従ってクエリを処理せよ。

6
abcdcf
4
2 1 3
2 2 6
1 5 e
2 2 6
Yes
No
Yes
  • 11 番目のクエリにおいて、SS を文字の昇順に並び替えて得られる文字列 TTabccdf です。 SS11 文字目から 33 文字目までからなる文字列は abc であり TT の部分文字列です。よって Yes を出力します。
  • 22 番目のクエリにおいて、SS を文字の昇順に並び替えて得られる文字列 TTabccdf です。 SS22 文字目から 66 文字目までからなる文字列は bcdcf であり TT の部分文字列ではありません。よって No を出力します。
  • 33 番目のクエリにより、SS55 文字目が e に置き換えられ、SSabcdef となります。
  • 44 番目のクエリにおいて、SS を文字の昇順に並び替えて得られる文字列 TTabcdef です。 SS22 文字目から 66 文字目までからなる文字列は bcdef であり TT の部分文字列です。よって Yes を出力します。