B - Evaluate F and G
Assam
2
s
1024
MB
100
点
問題文
$e$ を空文字列、$f(X)$ を文字列 $X$ に f を前置する関数、$g(X)$ を文字列 $X$ に g を前置する関数、$X+Y$ を文字列 $X$ と $Y$ をこの順に連結する演算とします。
以下のBNFにおける <expr> シンボルとして表される式 $S$ が与えられるので、その式を評価した文字列を答えてください。
<expr> ::= <term> | <expr> "+" <term>
<term> ::= "e" | <func>
<func> ::= "f(" <expr> ")" | "g(" <expr> ")"
ただし、式 $S$ 中の記号はそれぞれ以下の意味を持つものとします。
e$: e$ (空文字列)f( <expr> )$: f(\mathtt{\langle expr \rangle})$ (関数 $f$ )g( <expr> )$: g(\mathtt{\langle expr \rangle})$ (関数 $g$ )+$: +$ (演算子 $+$ )
制約
- $1 \leq |S| \leq 200{,}000$
- $S$ は問題文で定義されたBNF上の
<expr>シンボルとして表される
入力
入力は以下の形式で標準入力から与えられる。
$S$
出力
式 $S$ を評価した文字列を出力せよ。
入力例 1
f(g(e+f(e)))+g(e+e)
出力例 1
fgfg
以下のように評価されます。表示の都合上、空文字列は半角スペースで表示します。
$f(g(e+f(e)))+g(e+e) = f(g($ $+$f$))+g($ $) = f($gf$)+$g$ = $fgf$+$g$ = $fgfg
入力例 2
e
出力例 2
答えが空文字列であるため、改行のみを出力してください。