Множества в Паскале несколько ущербны. Дело втом, что это могут быть только множества чисел от 0 до 255. В Паскале они реализованы как bitmap то есть, 256 битовый массив. Если бит номер i включен - значит, елемент i в множестве. Более общая реализация, вообще-то, зависит от языка, но принцип такой : держим некое сбалансированое дерево, например AVL или red-black tree, когда мы хотим занести елемент в множество, просто заносим его в узел дерева. Когда мы хотим узнать принадлежит ли елемент множеству, просто производим поиск по дереву. Итого : сложность всех методов множества О(log n), когда n это мощность множества. Кроме того, множество может легко расти и сжиматься. В C++ есть уже готовый контайнер std::set.