【クエリメニュー】> 【Vtuber】STEP: 1 アイドルグループ (paizaランク B 相当) [難易度: 1858 ±24]
※リンク先へ移動するためには[paiza]へのログインが必要です。
N 人組のロボットアイドルグループのマネージャーとなった paiza 君は、グループに所属しているアイドル全員の名前を把握しておく必要があります。アイドルグループにはメンバーの加入と脱退がつきものなので、そのたびにメンバーを覚えたり忘れたりする必要があります。
paiza 君は仕事として握手会の度にアイドル全員の名前を書き出します。
ロボットの名前はほとんどが乱数的に付けられたものなので覚えるのが大変です。
そこで、イベント(メンバーの加入・脱退と握手会)が与えられるので、それらに伴う paiza 君の仕事をおこなうプログラムを作成しましょう。
条件
・1 ≦ N , K ≦ 100,000
・name_i はアルファベット小文字(a ~ z)と数字(0 ~ 9)から成る 20 文字以下の文字列です。 (1 ≦ i ≦ N)
・S_i (1 ≦ i ≦ K) は次のいずれかの形式で与えられます。
・join name
name という名前のアイドルが加入することを表します。
name はアルファベット小文字(a ~ z)と数字(0 ~ 9)から成る 20 文字以下の文字列です。
・leave name
name という名前のアイドルが脱退することを表します。
name はアルファベット小文字(a ~ z)と数字(0 ~ 9)から成る 20 文字以下の文字列です。
脱退時に name という名前のアイドルがグループにいることが保証されています。
・handshake
握手会がおこなわれることを表します。
握手会時点でのグループの全メンバーの名前を辞書順に改行区切りで出力してください。
グループのメンバーが 0 人であるときには何も出力しないでください。
・アイドルグループに所属するメンバーの名前は重複しないことが保証されています。
・握手会がおこなわれるのは 10 回以下であることが保証されています。
入力値(例)
2 7
nene
ao
handshake
leave nene
join neko
join koko
handshake
leave neko
handshake
出力値(例)
ao
nene
ao
koko
neko
ao
koko
解答例
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 |
<?php list($n, $k) = explode(" ", trim(fgets(STDIN))); for ($i = 0; $i < $n; $i++) { $a[] = trim(fgets(STDIN)); } for ($i = 0; $i < $k; $i++) { $s = trim(fgets(STDIN)); if ($s == "handshake") { sort($a); foreach ($a as $value) { echo $value. "\n"; } } else { list($event, $name) = explode(" ", $s); if ($event == "join") { $a[] = $name; } else { $num = array_search($name, $a); unset($a[$num]); } } } ?> |