Игнорирование 'крайнего случая' это выглядит нормально, за исключением того, что ваше время увеличивается на 2, а не на 3 согласно спецификации.
int time = 3
for: every CEOcheckTime in CEOcheckTimes
add (CEOcheckTimes-time) to results
time = time + 3
здесь может быть использован аналогичный подход вовремя, который учитывает и ваш крайний случай.
for: every CEOcheckTime in CEOcheckTimes
if exists(time):
if last(results) + time < CEOcheckTime:
add (CEOcheckTimes) to results
time = time + 3
else:
add (CEOcheckTimes) to results
time = 3
edit: я предположил, что если работа начинается / заканчивается одновременно с проверкой того, что это считается работой.