【スタック・キューメニュー】> STEP: 1 2 つのキュー (paizaランク C 相当) [難易度: 1380 ±30]
※リンク先へ移動するためには[paiza]へのログインが必要です。
Q 個のクエリが与えられます。 2 つのキューを用意したあと、 Q 個のクエリを順に処理してください。各クエリは、以下の 5 つのいずれかです。
・ PUSH 1 X: 1 つ目のキューに数値 X を追加
・ PUSH 2 X: 2 つ目のキューに数値 X を追加
・ POP 1: 1 つ目のキューの先頭の要素を削除し、その値を出力
・ POP 2: 2 つ目のキューの先頭の要素を削除し、その値を出力
・ SIZE: 1 つ目のキュー、 2 つ目のキューに含まれる要素数をそれぞれ出力
入力値(例)
6
1 1 2
1 2 3
1 1 4
3
2 1
3
出力値(例)
2 1
2
1 1
解答例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<?php $n = trim(fgets(STDIN)); $a1 = []; $a2 = []; for($i = 0; $i < $n; $i++) { $c = trim(fgets(STDIN)); if($c[0] == 1) { list($push, $k, $x) = explode(" ", $c); if($k == 1) { $a1[] = $x; } elseif($k == 2) { $a2[] = $x; } } elseif($c[0] == 2) { list($pop, $k) = explode(" ", $c); if($k == 1) { $q = array_shift($a1); echo $q. "\n"; } elseif($k == 2) { $q = array_shift($a2); echo $q. "\n"; } } else { $a = count($a1); $b = count($a2); printf("%d %d\n", $a, $b); } } ?> |