【クエリメニュー】> 【ソートと検索 (query)】STEP: 7 連想配列(query) (paizaランク B 相当) [難易度: 1434 ±23]
※リンク先へ移動するためには[paiza]へのログインが必要です。
3xxx年、ロボット学校の先生である paiza 君は、新しく担当するクラスの生徒一人一人の出席番号と識別 ID を覚えて、出席番号が与えられたら、その生徒の識別 ID を言えるようになる必要があります。
paiza 君の務める学校は転校が多く、頻繁に生徒が増減します。
覚えるべき生徒の出席番号と識別 ID が与えられたのち、いくつかのイベントを表す文字列が与えられるので、与えられた順に各イベントに応じて次のような処理をおこなってください。
・join num id
生徒番号 num , 識別ID id の生徒を新たに覚える
・leave num
生徒番号 num の生徒を忘れる
・call num
生徒番号 num の生徒の識別 ID を出力する
入力値(例)
4 4
1 Sin
2 Sakura
3 Kayo
4 Yui
call 4
leave 2
join 2 Sakuya
call 2
出力値(例)
Yui
Sakuya
解答例
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 |
<?php list($n, $k) = explode(" ", trim(fgets(STDIN))); for ($i = 0; $i < $n; $i++) { list ($id, $name) = explode(" ", trim(fgets(STDIN))); $ids[$id] = $name; } for ($i = 0; $i < $k; $i++) { $q = trim(fgets(STDIN)); if (strpos($q, "join") !== FALSE) { list($join, $join_num, $join_name) = explode(" ", $q); $ids[$join_num] = $join_name; } elseif (strpos($q, "leave") !== FALSE) { list($leave, $leave_num) = explode(" ", $q); unset($ids[$leave_num]); } elseif (strpos($q, "call") !== FALSE) { list($call, $call_num) = explode(" ", $q); echo $ids[$call_num]. "\n"; } } ?> |