100 atcoder#ABC158D. [ABC158D] String Formation

[ABC158D] String Formation

配点 : 400400

問題文

高橋君は、英小文字から成る文字列 SS を持っています。

この SS から始めて、ある与えられた手順に従って文字列を作ることにしました。

手順は QQ 回の操作から成ります。操作 i(1iQ)i(1 \leq i \leq Q) では、まず整数 TiT_i が与えられます。

  • Ti=1T_i = 1 のとき : 文字列 SS の前後を反転する。
  • Ti=2T_i = 2 のとき : 追加で整数 FiF_i と英小文字 CiC_i が与えられる。
    • Fi=1F_i = 1 のとき : 文字列 SS の先頭に CiC_i を追加する。
    • Fi=2F_i = 2 のとき : 文字列 SS の末尾に CiC_i を追加する。

高橋君のために、手順の後に最終的にできる文字列を求めてあげてください。

制約

  • 1S1051 \leq |S| \leq 10^5
  • SS は英小文字から成る
  • 1Q2×1051 \leq Q \leq 2 \times 10^5
  • Ti=1T_i = 1 または 22
  • Fi=1F_i = 1 または 22
  • CiC_i は英小文字である

入力

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

SS

QQ

Query1Query_1

::

QueryQQuery_Q

33 行目から Q+2Q + 2 行目の QueryiQuery_i は、以下の 22 つのいずれかである。

11

Ti=1T_i = 1 として操作を行うことを表す。

22 FiF_i CiC_i

Ti=2T_i = 2 として操作を行うことを表す。

出力

手順の後に最終的にできる文字列を出力せよ。

a
4
2 1 p
1
2 2 c
1
cpa

Q=4Q = 4 回の操作を行います。初め SSa です。

  • 操作 11 : SS の先頭に p を追加する。SSpa となる。
  • 操作 22 : SS の前後を反転する。SSap となる。
  • 操作 33 : SS の末尾に c を追加する。SSapc となる。
  • 操作 44 : SS の前後を反転する。SScpa となる。

よって最終的にできる文字列は cpa となります。

a
6
2 2 a
2 1 b
1
2 2 c
1
1
aabc

Q=6Q = 6 回の操作を行います。初め SSa です。

  • 操作 11 : SSaa となる。
  • 操作 22 : SSbaa となる。
  • 操作 33 : SSaab となる。
  • 操作 44 : SSaabc となる。
  • 操作 55 : SScbaa となる。
  • 操作 66 : SSaabc となる。

よって最終的にできる文字列は aabc となります。

y
1
2 1 x
xy