問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!
まずはスタックを扱う練習として 3 つのスタックを用意して、それらに基本操作を行いましょう。
はじめ 3 つのスタックは空です。
次のいずれかの指示が N 回与えられるので、入力された順番に指示通りの操作をしてください。
全ての指示が終わった後、各スタックに含まれる要素を上から順に出力してください。
・push S X
S 番目のスタックに X を追加する。
・pop S
S 番目のスタックの一番上の要素を取り出す。
スタックの要素が存在しない場合は何もしない。
N
Q_1
Q_2
...
Q_N
・3 つのスタックの要素を次の順番で改行区切りで出力してください。
・スタックが空の場合は何も出力しないでください。
1 つ目のスタックの一番上の要素
→...
→1 つ目のスタックの一番下の要素
→2 つ目のスタックの一番上の要素
→...
→2 つ目のスタックの一番下の要素
→3 つ目のスタックの一番上の要素
→...
→3 つ目のスタックの一番下の要素
すべてのテストケースにおいて、以下の条件をみたします。
・1 ≦ N ≦ 10000
・Q_i は次のいずれかの形式(1 ≦ i ≦ N)
「push S X (1 ≦ S ≦ 3, 1 ≦ X ≦ 10000)」
「pop S(1 ≦ S ≦ 3)」
・空のスタックから要素を取り出すような pop は与えられないことが保証されている。
5
push 1 5
push 2 3
push 3 1
pop 2
pop 1
1
7
push 1 1
push 1 1
push 1 1
push 2 2
push 2 4
pop 1
push 3 3
1
1
4
2
3