1. paizaラーニングトップ
  2. レベルアップ問題集
  3. スタック・キューメニュー応用編(言語選択)
  4. 問題一覧
  5. 3 つのスタック

スタック・キューメニュー応用編のサムネイル
3 つのスタック(paizaランク C 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

まずはスタックを扱う練習として 3 つのスタックを用意して、それらに基本操作を行いましょう。
はじめ 3 つのスタックは空です。
次のいずれかの指示が N 回与えられるので、入力された順番に指示通りの操作をしてください。
全ての指示が終わった後、各スタックに含まれる要素を上から順に出力してください。

・push S X
S 番目のスタックに X を追加する。

・pop S
S 番目のスタックの一番上の要素を取り出す。
スタックの要素が存在しない場合は何もしない。

入力される値

N
Q_1
Q_2
...
Q_N


・1 行目では与えられる指示の回数 N が与えられます。
・2 行目からの N 行では、スタックの操作の指示が与えられます。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

・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 は与えられないことが保証されている。

入力例1

5
push 1 5
push 2 3
push 3 1
pop 2
pop 1

出力例1

1

入力例2

7
push 1 1
push 1 1
push 1 1
push 2 2
push 2 4
pop 1
push 3 3

出力例2

1
1
4
2
3

問題一覧へ戻る

ページの先頭へ戻る