Деление на нуль там, где его нет. Python

Решаю задачу на бинпоиск (кому интересно вот эту). Написал алгоритм левого бинпоиска:

n, k = map(int, input().split())
arr = []
for i in range(n):
    arr.append(int(input()))
else:
    l = 0; r = 10 * 1000 * 1000 + 1
    while l < r:
        p = (l + r) // 2
        print(p)
        if sum(map(lambda x: x // p, arr)) <= k - 1: r = p
        else: l = p + 1
    else:
        print(l-1)

Он отработал все тесты, кроме одного. И этот тест имеет входные данные из рода чего-то такого:

4 6
1
1
1
1

(т.е. тогда, когда мы физически не можем разрезать 4 веревки на 6 кусочков длинной не меньше 1 см)

И ошибка выскакивает:

. . . line 9, in <lambda>
if sum(map(lambda x: x // p, arr)) <= k - 1: r = p
ZeroDivisionError: integer division or modulo by zero

При этом значение p в этот момент (вроде как) равно 5 000 000 и откуда там могло взяться деление на нуль, я ума не приложу.


Ответы (0 шт):