Задачу можно решить методом двоичного поиска по ответу. Научимся проверять, можно ли разбить отрезок на $$$n$$$ частей так, чтобы длины всех частей не превосходили $$$x$$$. Тогда ответом будет минимальное $$$x$$$, при котором будет существовать разбиение.
Чтобы проверить существование разбиения при выбранном $$$x$$$, нужно действовать жадно. Начало самого левого отрезка имеет координату $$$0$$$, а концом сделаем точку с координатой $$$\min(a_2, x)$$$. Заметим, что конец точно не может иметь большую координату. Потому что тогда либо точки $$$a_1$$$ и $$$a_2$$$ обе будут лежать целиком внутри первого отрезка, либо первый отрезок будет иметь длину больше $$$x$$$. Также, несложно заметить, что уменьшать координату конца не имеет смысла, потому что если существует разбиение при котором конец первого отрезка имеет меньшую координату, эту координату можно увеличить. При этом, длина первого отрезка не станет больше $$$x$$$, длина второго отрезка уменьшится, длины остальных отрезков не изменятся. Поэтому это разбиение тоже будет корректно. Таким образом, можно продолжать жадный алгоритм и для следующих отрезок, рассматривая в качестве координаты начала конец предыдущего отрезка. Если какой-то отрезок не содержит ни одной точки, либо конец последнего отрезка имеет координату меньше, чем $$$l$$$, разбиения при данном $$$x$$$ не существует.