Operaciones Avanzadas con Diccionarios

Se te proporciona un diccionario vacío y q consultas. Cada consulta puede ser de uno de los siguientes tres tipos:
  • Tipo 1: Insertar una cadena en el diccionario.
  • Tipo 2: Verificar si una cadena existe en el diccionario.
  • Tipo 3: Eliminar una cadena del diccionario.
Tu objetivo es implementar un programa que procese estas consultas de manera eficiente.
Para una consulta de tipo 2, si la cadena está presente, muestra Yes; de lo contrario, muestra No.

Entrada

La primera línea de la entrada contiene un número entero q (1 ≤ q ≤ 100 000), que indica la cantidad de consultas.
Las siguientes q líneas describen las consultas. Cada línea comienza con un número entero, type (1, 2 o 3), que indica el tipo de consulta.
  • Si type = 1: la línea irá seguida de un espacio y una cadena s (1 ≤ |s| ≤ 1000), que representa la cadena que se insertará en el diccionario. Esta cadena solo contiene letras minúsculas del alfabeto inglés.
  • Si type = 2: la línea irá seguida de un espacio y una cadena s (1 ≤ |s| ≤ 1000), que representa la cadena que se verificará en el diccionario. Esta cadena solo contiene letras minúsculas del alfabeto inglés.
  • Si type = 3: la línea irá seguida de un espacio y una cadena s (1 ≤ |s| ≤ 100), que representa la cadena que se eliminará del diccionario. Esta cadena solo contiene letras minúsculas del alfabeto inglés.
Se garantiza que la suma de las longitudes de todas las cadenas en las consultas no supera .

Salida

Para cada consulta de tipo 2, muestra Yes si la cadena está presente en el diccionario; de lo contrario, muestra No.

Ejemplos

Entrada
Salida
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