ABC473 B - Old Maid

ババ抜き

考え方

タイトル通り、ババ抜き。
最初から $N$ 枚持っている設定になっているが、$1$ 枚ずつ加えていくと思う方が考えやすい。

数の集合を扱える set を使って、今の手札を管理する。
set では同じカードを $2$ 枚持つことが難しいが、今回なら何も影響がない。
$1$ 枚ずつ手札に加えていくようにしたおかげで、同じカードを複数持つ状況がないため。

ということで、カードを1枚ずつ見て、ループで以下を行う。

全てのカードを処理したら、手札に残っているカードに書かれた数を合計すればよい。

入力例1での動作

入力を受け取る。

n: 8
a: {2, 7, 1, 8, 2, 8, 1, 8}

最初、手札を表す set は空である。
カードを前から順に見ると、次のように変化する。

見るカード そのカードが手札にあるか 処理 処理後の手札
$2$ ない $2$ を追加 {2}
$7$ ない $7$ を追加 {2,7}
$1$ ない $1$ を追加 {1,2,7}
$8$ ない $8$ を追加 {1,2,7,8}
$2$ ある $2$ を削除 {1,7,8}
$8$ ある $8$ を削除 {1,7}
$1$ ある $1$ を削除 {7}
$8$ ない $8$ を追加 {7,8}

最後に手札へ残っているカードは $7$ と $8$ なので、答えは $7+8=15$ となる。

注意点

特になし。

別解

各数字が何枚あるかを数え、枚数が奇数である数だけを合計してもよい。