Поиск

Сосиски


Ограничение времени - 1 секунда

Ввод - стандартный ввод или input.txt

Ограничение памяти - 256Mb

Вывод - стандартный вывод или output.txt

ВМК организует соревнование по быстрому поеданию сосисок. В этом соревновании участвуют команды из $$$k$$$ человек. Для соревнования на столе выставляется в линию $$$n$$$ пачек с сосисками, и каждый участник команды берет несколько пачек подряд из линии, начиная слева. Участник может взять любое количество пачек, включая ноль, если предыдущий участник взял последнюю. Последний участник команды берет все оставшиеся пачки. Запрещено передавать пачки другим участникам или есть из одной пачки нескольким участникам. После того, как пачки сосисок распределены, дан сигнал к началу, и все участники начинают есть свои сосиски. Время окончания определяется по последнему участнику, который закончит есть, и округляется вверх до целого числа секунд.

Количество сосисок в пачке может быть разным, поэтому важно распределить пачки среди участников команды таким образом, чтобы время поедания было минимальным. Известно, что каждый участник может съесть ровно $$$s$$$ сосисок в секунду.

Напишите программу, которая определит за какое минимальное время команда может съесть все сосиски.

Входные данные

Первая строка ввода содержит три числа —- количество пачек сосисок $$$n$$$ $$$(1 \le n \le 10^5)$$$, количество членов команды $$$k$$$ $$$(1 \le k \le 10^5)$$$ и скорость поедания сосисок $$$s$$$ $$$(1 \le s \le 50)$$$. Следующая строка содержит $$$n$$$ чисел —- количество сосисок в пачках $$$a_i(1 \le a_i \le 10^4)$$$ слева направо.

Выходные данные

Вывести минимальное время, которое потребуется команде, чтобы съесть все сосиски.

Примеры

Входные данные
5 3 4
5 8 3 10 7
Выходные данные
4
Входные данные
3 2 1
1 5 1
Выходные данные
6

Сосиски

Сначала нужно написать функцию, моделирующую поедание ряда сосисок. При этом каждый участник забирает сосиски, которые он может съесть за время $$$t$$$. Если не вcе сосиски будут съедены, функция возвращает false, иначе true. С помощью бинарного поиска находим наименьшее $$$t$$$, при котором все сосиски будут съедены.

Частичное решение можно получить, постепенно проверяя все варианты $$$t$$$ от 1.


Для отправки решения задачи необходимо авторизоваться!