Opérations avancées sur un dictionnaire

Vous disposez d’un dictionnaire initialement vide et de q requêtes. Chaque requête peut être de l’un des trois types suivants :
  • Type 1 : Insérer une chaîne (string) dans le dictionnaire.
  • Type 2 : Vérifier si une chaîne existe dans le dictionnaire.
  • Type 3 : Supprimer une chaîne du dictionnaire.
Votre tâche consiste à implémenter un programme qui traite ces requêtes de manière efficace.
Pour une requête de type 2, si la chaîne demandée est présente, affichez Yes, sinon affichez No.

Entrée

La première ligne de l’entrée contient un entier q (1 ≤ q ≤ 100 000), représentant le nombre de requêtes.
Les q lignes suivantes décrivent chacune une requête. Chaque ligne commence par un entier, type (1, 2 ou 3), indiquant le type de la requête.
  • Si type = 1 : la ligne est suivie d’un espace et d’une chaîne s (1 ≤ |s| ≤ 1000) représentant la chaîne à insérer dans le dictionnaire. La chaîne se compose uniquement de lettres minuscules anglaises.
  • Si type = 2 : la ligne est suivie d’un espace et d’une chaîne s (1 ≤ |s| ≤ 1000) représentant la chaîne à vérifier dans le dictionnaire. La chaîne se compose uniquement de lettres minuscules anglaises.
  • Si type = 3 : la ligne est suivie d’un espace et d’une chaîne s (1 ≤ |s| ≤ 100) représentant la chaîne à supprimer du dictionnaire. La chaîne se compose uniquement de lettres minuscules anglaises.
Il est garanti que la somme des longueurs de toutes les chaînes de requêtes ne dépasse pas .

Sortie

Pour chaque requête de type 2, affichez Yes si la chaîne est présente dans le dictionnaire, sinon affichez No.

Exemples

Entrée
Sortie
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