[ABC158D] String Formation
题意翻译
一开始有一个只包含小写字母的字符串 $S$。
接下来要执行 $Q$ 次操作,对于每次操作,输入一个 $T_i$。
- 如果 $T_i=1$,将 $S$ 翻转。
- 如果 $T_i=2$,再给定一个数 $F_i$ 和一个小写字母 $C_i$。
- 如果 $F_i=1$,将 $C_i$ 加在 $S$ 的开头。
- 如果 $F_i=2$,将 $C_i$ 加在 $S$ 的末尾。
输出所有操作结束后的字符串 $S$。
题目描述
[problemUrl]: https://atcoder.jp/contests/abc158/tasks/abc158_d
高橋君は、英小文字から成る文字列 $ S $ を持っています。
この $ S $ から始めて、ある与えられた手順に従って文字列を作ることにしました。
手順は $ Q $ 回の操作から成ります。操作 $ i(1\ \leq\ i\ \leq\ Q) $ では、まず整数 $ T_i $ が与えられます。
- $ T_i\ =\ 1 $ のとき : 文字列 $ S $ の前後を反転する。
- $ T_i\ =\ 2 $ のとき : 追加で整数 $ F_i $ と英小文字 $ C_i $ が与えられる。
- $ F_i\ =\ 1 $ のとき : 文字列 $ S $ の先頭に $ C_i $ を追加する。
- $ F_i\ =\ 2 $ のとき : 文字列 $ S $ の末尾に $ C_i $ を追加する。
高橋君のために、手順の後に最終的にできる文字列を求めてあげてください。
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられる。
> $ S $ $ Q $ $ Query_1 $ $ : $ $ Query_Q $
$ 3 $ 行目から $ Q\ +\ 2 $ 行目の $ Query_i $ は、以下の $ 2 $ つのいずれかである。
> $ 1 $
$ T_i\ =\ 1 $ として操作を行うことを表す。
> $ 2 $ $ F_i $ $ C_i $
$ T_i\ =\ 2 $ として操作を行うことを表す。
输出格式
手順の後に最終的にできる文字列を出力せよ。
输入输出样例
输入样例 #1
a
4
2 1 p
1
2 2 c
1
输出样例 #1
cpa
输入样例 #2
a
6
2 2 a
2 1 b
1
2 2 c
1
1
输出样例 #2
aabc
输入样例 #3
y
1
2 1 x
输出样例 #3
xy
说明
### 制約
- $ 1\ \leq\ |S|\ \leq\ 10^5 $
- $ S $ は英小文字から成る
- $ 1\ \leq\ Q\ \leq\ 2\ \times\ 10^5 $
- $ T_i\ =\ 1 $ または $ 2 $
- $ F_i\ =\ 1 $ または $ 2 $
- $ C_i $ は英小文字である
### Sample Explanation 1
$ Q\ =\ 4 $ 回の操作を行います。初め $ S $ は `a` です。 - 操作 $ 1 $ : $ S $ の先頭に `p` を追加する。$ S $ は `pa` となる。 - 操作 $ 2 $ : $ S $ の前後を反転する。$ S $ は `ap` となる。 - 操作 $ 3 $ : $ S $ の末尾に `c` を追加する。$ S $ は `apc` となる。 - 操作 $ 4 $ : $ S $ の前後を反転する。$ S $ は `cpa` となる。 よって最終的にできる文字列は `cpa` となります。
### Sample Explanation 2
$ Q\ =\ 6 $ 回の操作を行います。初め $ S $ は `a` です。 - 操作 $ 1 $ : $ S $ は `aa` となる。 - 操作 $ 2 $ : $ S $ は `baa` となる。 - 操作 $ 3 $ : $ S $ は `aab` となる。 - 操作 $ 4 $ : $ S $ は `aabc` となる。 - 操作 $ 5 $ : $ S $ は `cbaa` となる。 - 操作 $ 6 $ : $ S $ は `aabc` となる。 よって最終的にできる文字列は `aabc` となります。