Чисто заменой TreeSet на что-то другое улучшить асимптотику очевидно не удастся
Всё-таки любопытно, какая нижняя граница для этой задачи в худшем? Не очевидно, что сортировка по стоимости работ обязательна. По крайней мере, если у всех работ дедлайн равен
, то работы можно выполнить вообще в произвольном порядке. А если дедлайны работ - это все различные числа в диапазоне от
до
, то отсортировать их по дням можно за
. И если все дедлайны одновременно равны
, то задача, тоже, имеет асимптотическую сложность
.
О! На самом деле, нас не просят рассортировать работы по дням, а спрашивают, какая максимальная прибыль? Но мы можем узнать за
сколько работ Вася не успеет выполнить в
каждый день дедлайна при использовании им оптимальной стратегии. А значит, мы знаем, от скольки всего работ придётся отказаться. Значит, считаем, сколько
работ будет выполнено, и берём сумму стоимости
работ с максимальной стоимостью. Асимптотически это
.
UPD А, нет, не всё так просто.