programmation du Nord et des algorithmes (c) Résumé quiz (printemps 2020)
description
Un ensemble classique de nombres entiers (permettant des éléments en double), initialement vide. Nous définissons comme suit:
la Ajouter x x ajouté à la collection
del ensemble x à x égal à tous la suppression de l' élément
DEMANDEZ x dans un cas où l'élément de collecte x interrogation
de chaque opération, nous avons besoin de la sortie suivante.
ensemble x ajouter opération de sortie après le nombre de
nombre x ensemble avant l'opération de sortie del
demander première sortie indiquant si 0 ou 1 a été ajouté à l'ensemble des x (0 INDIQUE jamais ajouté), et délivre alors le nombre de l'ensemble actuel de x, ouverture intermédiaire par des espaces.
Entrée
de la première ligne est un entier n, le nombre de commandes. 0 <= n <= 100.000.
N commandes de ligne de retour, comme décrit dans la description.
Sortie
totale n lignes, chaque ligne de sortie requise.
entrée échantillon
. 7
l'Add. 1
l'Add. 1
DEMANDER. 1
DEMANDEZ 2
del 2
del. 1
DEMANDEZ. 1
Exemple de sortie
. 1
2
. 1 2
0 0
0
2
. 1 0
提示
S'il vous plaît le jeu et multiset de utilisepasSTL pour terminer la tâche
analyse
Utilisez le jeu de modèle
#include <set>
#include <string>
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
multiset<int> sets;
set<int> be_sets;
int n;
cin >> n;
char cmd[20];
int num;
set<int>::iterator li;
while (n--) {
cin >> cmd;
int count = 0;
switch (cmd[1]) {
case 'd':
cin >> num;
sets.insert(num);
be_sets.insert(num);
cout << sets.count(num) << endl;
break;
case 'e':
cin >> num;
cout << sets.count(num) << endl;
for (li = sets.begin(); li != sets.end(); li++){
if (*li == num){
sets.erase(li);
}
}
break;
case 's':
cin >> num;
if (be_sets.find(num) != be_sets.end()) {
cout << 1 << " " << sets.count(num) << endl;
}
else
cout << 0 << " " << sets.count(num) << endl;
break;
}
}
return 0;
}