Деление на нуль там, где его нет. 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 и откуда там могло взяться деление на нуль, я ума не приложу.