
Вот занялся тут одной задачкой и что-то мозги буксуют.
Вводные: есть ряд диапазонов вида I1-I2, количество диапазонов порядка сотен и тысяч, диапазоны характеризуются большими числами (14 разрядов).
Диапазоны бывают двух типов, Д1 и Д2. Диапазоны Д1 не должны пересекаться между собой. Диапазоны Д2 также не должны пересекаться между собой и вдобавок они должны входить в диапазоны Д1.
Нужно организовать работу с этими диапазонами, т.е. определять, являются ли диапазоны пересекающимися, смежными, несмежными и находить пустоты между несмежными диапазонами (т.к. эти диапазоны задает человек-оператор и он может ошибиться, надо его проверять).
Мне упрямо лезет в голову только решение в лоб: для граничных значений каждого диапазона проверять на предмет вхождения/соседства/не соседства со всеми остальными диапазонами. Просто, понятно, но для тысячи диапазонов это означает миллион проходов, что нехорошо.