inkyТак можно сортировать просто по левой границе занимаемых ресурсов, т.е. по возрастанию
start. И будем следить, чтобы у блокировок, которые находятся в множестве, промежутки
не пересекались. Делаем примерно так:
На этапе проверки на пересечение с имеющимимся блокировками, ищем наименьший элемент, у которого
start больше вставляемого, а также наибольший элемент, у которого
start меньше вставляемого. Если эти товарищи пересекаются (как прямоугольники), то не вставляем. А если не пересекаются прямоугольники, но пересекаются "в проекции" на ось ресурсов, то удаляем старый(е) и вставляем новый. А если даже в проекции не пересекаются, то просто вставляем.
UPD. Конечно же, проверять на пересечение надо не только найденные в множестве наибольший и наименьший, но и все между ними.