Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <set> // подключение set'а
- using namespace std; // т.к. библиотека set из STL (стандартной библиотеки шаблонов), то эта строчка необходима, в её смысл пока можно не вникать :)
- set<int> heap; // объявляем set из int'ов. Вместо int любой другой тип, в том числе, пользовательский. Аналогично объявлению vector'а.
- int main() {
- // теперь пусть у нас есть на входе n элементов, и мы хотим их закинуть в set
- int n;
- scanf("%d", &n);
- for (int i = 0; i < n; i++) {
- int a;
- scanf("%d", &a);
- heap.insert(a); // добавить значение a в set
- }
- // set не heap, а красно-чёрное дерево, а потому умеет делать несколько больше, чем обычная куча. Например, он может возвращать как максимум, так и минимум.
- int mx = *heap.begin(); // значение минимального элемента
- int mn = *heap.rbegin(); // значение максимального элемента (две последние строчки мог перепутать местами, опытным путём легко проверить :)
- printf("%d %d ", mx, mn);
- heap.erase(239); // удалить элемент со значением 239
- heap.erase(heap.begin()); // удалить минимальный элемент. Обрати внимание, аргумент функции - итератор (указатель), а не числовое значение, как в прошлой строчке. Так тоже можно
- int exist = heap.count(251211); // 1, если элемент со значением 251211 есть в set'е, 0 - иначе.
- int sz = heap.size(); // количество элементов в set'е
- // важное уточнение: set не хранит одинаковые элементы. Если тебе нужны одинаковые элементы во всех экземплярах, то нужно использовать multiset. Соответственно, название библиотеки меняется на <multiset>, и объявление - на multiset<int>. А метод count(a) теперь возвращает число элементов, равных a.
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement