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.