// Первое знакомство с set-ом
#include <set>
using namespace std;
// set = Cбалансированное дерево. Более точно - Красно-Черное дерево (RB-tree).
// Соответственно все делается за O(logN) (кроме size, size за O(1))
set <int> heap; // упорядоченное множество {2,3,4}
multiset <int> s; // отличается от set тем, что элемент может встречаться несколько раз {2,2,3,3,3,4}
int main()
{
s.insert(3); // добавить элемент "3" в множество
s.erase(3); // удалить элемент "3" из множества
for (int i = 0; i < 10; i++)
s.insert(i);
int Size = s.size(); // Размер множества
int Min = *s.begin(); // Минимальный элемент множества (если не пусто)
int Max = *s.rbegin(); // Максимальный элемент множества (если не пусто)
int is = s.count(3); // Сколько раз число 3 встречается в множестве (для set всегда или 0, или 1)
// s.begin() - указатель на первый элемент
// s.end() - указатель на первый элемент после конца
// set = [s.begin(), s.end())
// k-й элемент:
set <int>::iterator it = s.begin();
for (int i = 0; i < k; i++)
it++; // it += k писать нельзя, для set<int>::iterator += не существует
int res = *it;
return 0;
}