100 atcoder#ABC158D. [ABC158D] String Formation

[ABC158D] String Formation

题目描述

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

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

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

  • Ti = 1 T_i\ =\ 1 のとき : 文字列 S S の前後を反転する。

  • Ti = 2 T_i\ =\ 2 のとき : 追加で整数 Fi F_i と英小文字 Ci C_i が与えられる。

    • Fi = 1 F_i\ =\ 1 のとき : 文字列 S S の先頭に Ci C_i を追加する。
    • Fi = 2 F_i\ =\ 2 のとき : 文字列 S S の末尾に Ci C_i を追加する。

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

输入格式

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

S S Q Q Query1 Query_1 : : QueryQ Query_Q

3 3 行目から Q + 2 Q\ +\ 2 行目の Queryi Query_i は、以下の 2 2 つのいずれかである。

1 1

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

2 2 Fi F_i Ci C_i

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

输出格式

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

题目大意

一开始有一个只包含小写字母的字符串 SS

接下来要执行 QQ 次操作,对于每次操作,输入一个 TiT_i

  • 如果 Ti=1T_i=1,将 SS 翻转。
  • 如果 Ti=2T_i=2,再给定一个数 FiF_i 和一个小写字母 CiC_i
    • 如果 Fi=1F_i=1,将 CiC_i 加在 SS 的开头。
    • 如果 Fi=2F_i=2,将 CiC_i 加在 SS 的末尾。

输出所有操作结束后的字符串 SS

a
4
2 1 p
1
2 2 c
1
cpa
a
6
2 2 a
2 1 b
1
2 2 c
1
1
aabc
y
1
2 1 x
xy

提示

制約

  • 1  S  105 1\ \leq\ |S|\ \leq\ 10^5
  • S S は英小文字から成る
  • 1  Q  2 × 105 1\ \leq\ Q\ \leq\ 2\ \times\ 10^5
  • Ti = 1 T_i\ =\ 1 または 2 2
  • Fi = 1 F_i\ =\ 1 または 2 2
  • Ci C_i は英小文字である

Sample Explanation 1

Q = 4 Q\ =\ 4 回の操作を行います。初め S S a です。 - 操作 1 1 : S S の先頭に p を追加する。S S pa となる。 - 操作 2 2 : S S の前後を反転する。S S ap となる。 - 操作 3 3 : S S の末尾に c を追加する。S S apc となる。 - 操作 4 4 : S S の前後を反転する。S S cpa となる。 よって最終的にできる文字列は cpa となります。

Sample Explanation 2

Q = 6 Q\ =\ 6 回の操作を行います。初め S S a です。 - 操作 1 1 : S S aa となる。 - 操作 2 2 : S S baa となる。 - 操作 3 3 : S S aab となる。 - 操作 4 4 : S S aabc となる。 - 操作 5 5 : S S cbaa となる。 - 操作 6 6 : S S aabc となる。 よって最終的にできる文字列は aabc となります。