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

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

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

問題

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

Q 個のクエリが与えられます。 2 つのキューを用意したあと、 Q 個のクエリを順に処理してください。各クエリは、以下の 5 つのいずれかです。

・ PUSH 1 X: 1 つ目のキューに数値 X を追加
・ PUSH 2 X: 2 つ目のキューに数値 X を追加
・ POP 1: 1 つ目のキューの先頭の要素を削除し、その値を出力
・ POP 2: 2 つ目のキューの先頭の要素を削除し、その値を出力
・ SIZE: 1 つ目のキュー、 2 つ目のキューに含まれる要素数をそれぞれ出力

入力される値

Q
query_1
query_2
...
query_Q


1 行目に Q が与えられます。続く Q 行にクエリが与えられます。 各クエリは
1 K X

または
2 K

または
3

の形式で与えられ、最初の数値が 1 のとき PUSH 、 2 のとき POP 、 3 のとき SIZE を表します。 PUSH または POP のときは続いて数値 K が与えられます。 K が 1 のとき 1 つ目のキューに対して、 2 のとき 2 つ目のキューに対して操作が行われます。 PUSH のときはさらに数値 X が与えられます。


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

各クエリに応じて、以下の形式で値を出力してください。

・ PUSH の場合
改行を含めて何も出力する必要はありません。

・ POP の場合
クエリ処理を行う直前に、キューの先頭にある要素 F を出力してください。

F


・ SIZE の場合
1 つ目のキューに含まれる要素数 S_1 と 2 つ目のキューに含まれる要素数 S_2 をそれぞれ、半角スペース区切りで出力してください。

S_1 S_2


値を出力した各行の末尾には改行を入れ、余計な文字、空行を含んではいけません。

条件

すべてのテストケースにおいて、以下の条件をみたします。

・ Q は 1 以上 100 未満
・ query の最初の数値は 1 または 2 または 3
・ K は 1 または 2
・ X は 1 以上 100 未満
・ クエリ POP が与えられるときは対象のキューに必ず要素が 1 つ以上存在する

入力例1

6
1 1 2
1 2 3
1 1 4
3
2 1
3

出力例1

2 1
2
1 1

問題一覧へ戻る

ページの先頭へ戻る