Вот немного другой подход. Первая часть носит иллюстративный характер.
Создание массива целых, представляющих полную временную шкалу всех заданий. Это может быть в часах, минутах или как вам нужно. Я возьму часы. Найдите самое раннее время начала и самое позднее время окончания, чтобы установить размер массива. Инициализировать все элементы в ноль.
Перебирайте каждое задание, увеличивая счетчик на временной шкале для каждого часа выполнения задания. Таким образом, если задание выполняется с 15:00 до 17:00, то это два часа, поэтому вы должны увеличить интервал 3 часа и 4 часа, чтобы указать, что задание выполнялось в эти часы.
Цикл по временной шкале, подсчет количества нолей, с которыми вы сталкиваетесь. Это те временные интервалы, когда работа не выполнялась.
Теперь, если вы понимаете это, довольно легко избавиться от массива. Вместо создания (большого) массива, просто отслеживайте время начала и окончания всей временной шкалы. Для каждого часа в этом диапазоне просматривайте все ваши задания и смотрите, сколько из них запущено за это время. Любые, которые являются нулем, являются простоями.