Использование set (множества)




Set – это множество, которое содержит несколько отсортированных элементов. При добавлении нового элемента в множество он сразу становится на свое место так, чтобы не нарушать порядка сортировки. Множества содержат только уникальные элементы, а мультимножества могут содержать дубликаты. Операции поиска, удаления и вставки имеют логарифмическую сложность.
 
Для использования множеств необходимо подключить библиотеку “set”:
 
#include <set>

Объявление множества:

set<int> mySet; // Объявление пустого множества.

multiset<int> mySet; // Объявление пустого мультимножества.


Функции:
 
empty - Проверяет отсутствие элементов в контейнере
 
size - Возвращает количество элементов в контейнере
 
clear - Очищает контейнер
 
insert - Вставляет элементы
 
erase - Удаляет элементы
 
count - Возвращает количество элементов, соответствующих определенному ключу
 
find - Находит элемент с конкретным ключом
 
lower_bound - Возвращает итератор на первый элемент не менее, чем заданное значение
 
upper_bound - Возвращает итератор на первый элемент больше, чем определенное значение
 
Пример использования множества и мультимножества:

 

#include <iostream>

#include <set>

using namespace std;

int main()

{

set<int> mySet1; // объявили пустое множество

multiset<int> mySet2; // объявили пустое мультимножество

// добавляем элементы в множество

mySet1.insert(1);

mySet1.insert(2);

mySet1.insert(3);

mySet1.insert(1);

// добавляем элементы в мультимножество

mySet2.insert(1);

mySet2.insert(2);

mySet2.insert(3);

mySet2.insert(1);

set<int>::iterator it; //создание итератора

for(it = mySet1.begin(); it != mySet1.end(); it++) { // Вывод всех элементов

cout << (*it) <<  ; // множества

}

cout << endl;

for(it = mySet2.begin(); it != mySet2.end(); it++) { // Вывод всех элементов

cout << (*it) <<  ; // мультимножества

}

return 0;

}

Task
Time limit: 1000 ms,
Memory limit: 256 Mb

Дано число N (1 <= N <= 100000) – кол-во запросов. В следующих N строках содержится символ ‘+’ или ‘-’ и число a (1 <= a <= 1000000000). Если символ – ‘+’, то число a добавляется в множество, иначе – удаляются все значения a, которые были добавлены ранее. Гарантируется, что при удалении числа, оно содержится в множестве.

Требуется вывести все уникальные элементы (по возрастанию) в множестве после выполнения всех запросов или «-1», если в множестве нет элементов.

Ввод Вывод
3
+ 1
+ 2
- 1
2
3
+ 1
+ 1
- 1
 
-1
3
+ 1
+ 1
+ 1
1

(с) Шалдин В., 2018

Auto CHOOSE THE PROGRAMMING NECESSARY LANGUAGE!
Attach the program source file:
or enter the source code in the language:

Rules for designing programs and a list of errors during automatic task verification
           

Results: