/
Time Limit: 2 sec / Memory Limit: 1024 MiB
配点 : 400 点
問題文
高橋君は、英小文字から成る文字列 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 を追加する。
高橋君のために、手順の後に最終的にできる文字列を求めてあげてください。
制約
- 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 は英小文字である
入力
入力は以下の形式で標準入力から与えられる。
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
Q = 4 回の操作を行います。初め S は a です。
-
操作 1 : S の先頭に
pを追加する。S はpaとなる。 -
操作 2 : S の前後を反転する。S は
apとなる。 -
操作 3 : S の末尾に
cを追加する。S はapcとなる。 -
操作 4 : S の前後を反転する。S は
cpaとなる。
よって最終的にできる文字列は cpa となります。
入力例 2
a 6 2 2 a 2 1 b 1 2 2 c 1 1
出力例 2
aabc
Q = 6 回の操作を行います。初め S は a です。
-
操作 1 : S は
aaとなる。 -
操作 2 : S は
baaとなる。 -
操作 3 : S は
aabとなる。 -
操作 4 : S は
aabcとなる。 -
操作 5 : S は
cbaaとなる。 -
操作 6 : S は
aabcとなる。
よって最終的にできる文字列は aabc となります。
入力例 3
y 1 2 1 x
出力例 3
xy
Score : 400 points
Problem Statement
Takahashi has a string S consisting of lowercase English letters.
Starting with this string, he will produce a new one in the procedure given as follows.
The procedure consists of Q operations. In Operation i (1 \leq i \leq Q), an integer T_i is provided, which means the following:
-
If T_i = 1: reverse the string S.
-
If T_i = 2: An integer F_i and a lowercase English letter C_i are additionally provided.
- If F_i = 1 : Add C_i to the beginning of the string S.
- If F_i = 2 : Add C_i to the end of the string S.
Help Takahashi by finding the final string that results from the procedure.
Constraints
- 1 \leq |S| \leq 10^5
- S consists of lowercase English letters.
- 1 \leq Q \leq 2 \times 10^5
- T_i = 1 or 2.
- F_i = 1 or 2, if provided.
- C_i is a lowercase English letter, if provided.
Input
Input is given from Standard Input in the following format:
S Q Query_1 : Query_Q
In the 3-rd through the (Q+2)-th lines, Query_i is one of the following:
1
which means T_i = 1, and:
2 F_i C_i
which means T_i = 2.
Output
Print the resulting string.
Sample Input 1
a 4 2 1 p 1 2 2 c 1
Sample Output 1
cpa
There will be Q = 4 operations. Initially, S is a.
-
Operation 1: Add
pat the beginning of S. S becomespa. -
Operation 2: Reverse S. S becomes
ap. -
Operation 3: Add
cat the end of S. S becomesapc. -
Operation 4: Reverse S. S becomes
cpa.
Thus, the resulting string is cpa.
Sample Input 2
a 6 2 2 a 2 1 b 1 2 2 c 1 1
Sample Output 2
aabc
There will be Q = 6 operations. Initially, S is a.
-
Operation 1: S becomes
aa. -
Operation 2: S becomes
baa. -
Operation 3: S becomes
aab. -
Operation 4: S becomes
aabc. -
Operation 5: S becomes
cbaa. -
Operation 6: S becomes
aabc.
Thus, the resulting string is aabc.
Sample Input 3
y 1 2 1 x
Sample Output 3
xy