https://www.acmicpc.net/problem/1654


사실 7개월 전에 풀었던 문제인데 또 틀렸었다
진짜 안풀면 다 까먹는 게 맞는 것 같다
low = 1, high=(주어진 랜선의 최댓값)으로 한 후 이분탐색
내가 틀렸던 이유 : 처음에 low = 0으로 두고 풀어서 ZeroDivisionError
n, k = map(int, input().split())
lan = [int(input()) for _ in range(n)]
low = 1
high = max(lan) # 랜선 중 최댓값
answer = 0
while low <= high:
mid = (low + high) // 2
cnt = 0
for num in lan:
if mid != 0:
cnt += num // mid
if cnt >= k:
answer = mid
low = mid + 1
else:
high = mid - 1
print(answer)