Доброго времени суток, господа. Столкнулся с такой задачей:
Михаил Владимирович, суровый преподаватель факультета прикладной магии и иллюзии Байтландского Государственного университета задал студентам лабораторную работу, состоящую из задач на различные темы. Общее кол-во тем равно

, и они пронумерованы от 1 до

в некотором порядке, при этом на i-ю тему Михаил Владимирович задал

задач. Поскольку задачи выданы всем одинаковые, студенты решили объединить усилия. Обычный студент может решить одну задачу на любую тему за один день. К счастью для студентов, среди них присутствует 10-классник Гена, посещающий занятия ради любопытства. Гена способен решить до

задач включительно за день, однако задачи Михаила Владимировича настолько суровы, что даже Гена не может решать задачи на разные темы в один и тот же день. Всего у Михаила Владимировича учится

студентов. Помогите студентам и школьнику Гене так распределить обязанности, чтобы решить все задачи за наименьшее кол-во дней.
Формат входных данных:

,

,

,

.
ограничение по времени - 2 секунды, ограничение по памяти - 256 Мб.
Я решил использовать бинарный поиск по ответу, но не понимаю, как можно быстро отвечать на вопрос: "Можно ли решить все задачи за x дней?". По факту, у нас есть как бы

квадратиков размера 1 на 1 и

прямоугольников размера 1 на

, и надо ими покрыть все прямоугольники, соответствующие каждой теме. Дальше идей нет. Прошу помощи