Hay un conjunto de enteros (se permiten elementos repetidos), que inicialmente está vacío. Definimos las siguientes operaciones:
agregar x agrega x al conjunto
del x elimina todos los elementos en el conjunto igual a x preguntar x para preguntar sobre el elemento x en el conjunto
Para cada operación, requerimos el siguiente resultado.
Después de la recogida complemento operación de salida x número de
serie antes de la operación de salida del x número de
pedir a la salida 0 o 1 indica x nunca han añadido a la colección ( 0 nunca se indica en el original), y luego las salidas del conjunto actual de x número, Usa un espacio en el medio.
Formato de entrada
La primera línea es un número entero n, que indica el número de comandos. 0 ≤ n ≤ 1 0 0 0 0 0. Las siguientes n n líneas de comandos se describen en Descripción.
Formato de salida
Hay n líneas en total , y cada línea se emite según sea necesario.
Entrada de muestra
7 agregar 1 agregar 1 preguntar 1 preguntar 2 del 2 del 1 preguntar 1
Salida de muestra
1 2 1 2 0 0 0 2 1 0
#include <iostream> #include < set > #include <iterator> usando el espacio de nombres std; int main () { int n; cin >> n; comando char [ 4 ]; multiset < int > mset; establecer < int > mm; multiset < int > :: iterador; int num; para ( int i = 0 ; i <n; i ++ ) { cin >> comando >> num; switch (comando [ 1 ]) { case ' d ' : mset.insert (num); mm.insert (num); cout << mset.count (num) << endl; romper ; case ' e ' : cout << mset.count (num) << endl; mset.erase (num); romper ; case ' s ' : // find (clave); //Encuentre si la clave existe, si existe, devuelva el iterador del elemento de la clave; si no, devuelva set.end (); if (mm.find (num) == mm.end ()) { cout << " 0 0 " << endl; } else { cout << " 1 " << mset.count (num) << endl; } break ; predeterminado : break ; } } }