AT_abc158_d [ABC158D] String Formation
Description
[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 $ を追加する。
高橋君のために、手順の後に最終的にできる文字列を求めてあげてください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ S $ $ Q $ $ Query_1 $ $ : $ $ Query_Q $
$ 3 $ 行目から $ Q\ +\ 2 $ 行目の $ Query_i $ は、以下の $ 2 $ つのいずれかである。
> $ 1 $
$ T_i\ =\ 1 $ として操作を行うことを表す。
> $ 2 $ $ F_i $ $ C_i $
$ T_i\ =\ 2 $ として操作を行うことを表す。
Output Format
手順の後に最終的にできる文字列を出力せよ。
Explanation/Hint
### 制約
- $ 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` となります。