нужно сделать структуру, которая хранила бы следующие диапазоны значений
"занято от... и до..."
соответственно запросы должны быть типа
AddRange(int begin, int end); — добавить
HaveRange(int begin, int end); — есть ли этот диапазон целиком в добавленных, и если нет, то вернуть список диапазонов которых нет в добавленных.
Вот думаю, какую бы для этого структуру модифицировать, для более оптимальной работы.