Operações Avançadas em Dicionários

Você tem um dicionário vazio e q consultas. Cada consulta pode ser de um dos seguintes três tipos:
  • Type 1: Inserir uma string no dicionário.
  • Type 2: Verificar se uma string existe no dicionário.
  • Type 3: Excluir uma string do dicionário.
O seu objetivo é implementar um programa que processe essas consultas de maneira eficiente.
Para as consultas do tipo 2, se a string estiver presente, imprima Yes; caso contrário, imprima No.

Entrada

A primeira linha da entrada contém um inteiro q (1 ≤ q ≤ 100 000), que representa o número de consultas.
As q linhas seguintes descrevem as consultas. Cada linha começa com um inteiro, type (1, 2 ou 3), indicando o tipo de consulta.
  • Se type = 1: a linha será seguida por um espaço e uma string s (1 ≤ |s| ≤ 1000), indicando a string a ser inserida no dicionário. A string consiste apenas em letras minúsculas do alfabeto inglês.
  • Se type = 2: a linha será seguida por um espaço e uma string s (1 ≤ |s| ≤ 1000), indicando a string a ser verificada no dicionário. A string consiste apenas em letras minúsculas do alfabeto inglês.
  • Se type = 3: a linha será seguida por um espaço e uma string s (1 ≤ |s| ≤ 100), indicando a string a ser excluída do dicionário. A string consiste apenas em letras minúsculas do alfabeto inglês.
É garantido que a soma dos comprimentos de todas as strings de consulta não exceda .

Saída

Para cada consulta de tipo 2, imprima Yes se a string estiver presente no dicionário, caso contrário, imprima No.

Exemplos

Entrada
Saída
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