辞書(Dictionary)の高度な操作

空の辞書(Dictionary)と q 個のクエリが与えられます。クエリは以下の3種類のいずれかです:
  • Type 1: 辞書に文字列を挿入する
  • Type 2: ある文字列が辞書内に存在するかを確認する
  • Type 3: 辞書から文字列を削除する
これらのクエリを効率よく処理するプログラムを作成してください。
タイプ2のクエリでは、もし文字列が辞書に含まれていれば Yes、含まれていなければ No を出力します。

入力

最初の行には、クエリの数を表す整数 q (1 ≤ q ≤ 100 000) が与えられます。
続く q 行には、クエリの内容が記述されます。各行は最初に type (1, 2, もしくは3) が書かれており、その後ろに半角スペースを挟んで文字列 s が続きます:
  • type = 1 の場合: 文字列 s (1 ≤ |s| ≤ 1000) を辞書に挿入する。
  • type = 2 の場合: 文字列 s (1 ≤ |s| ≤ 1000) が辞書に存在するかを確認する。
  • type = 3 の場合: 文字列 s (1 ≤ |s| ≤ 100) を辞書から削除する。
文字列は英小文字のみで構成されています。

出力

タイプ2のクエリごとに、該当の文字列が辞書に存在するなら Yes、存在しなければ No を出力してください。

入力
出力
7 1 abc 1 xyz 2 abc 3 abc 2 abc 2 xyz 2 abo
Yes No Yes No
 

Constraints

Time limit: 4 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue