K, N = map(int, input().split())
lengths = [int(input()) for _ in range(K)]
# 랜선의 최솟값은 1, 최댓값은 주어진 랜선 길이의 max 값
min_length = 1; max_length = max(lengths)
result = 0
while(min_length <= max_length):
mean_length = (min_length + max_length) // 2
cut_num = 0
for length in lengths:
cut_num += length // mean_length
# 잘라진 랜선 개수가 N보다 많으면,
# mean_length 밑에 존재하는 길이는 볼 필요가 없음.
if(cut_num >= N):
result = mean_length
min_length = mean_length + 1
# 잘라진 랜선 개수가 부족하다면,
# mean_length 위에 존재하는 길이로는 조건을 만족할 수 없음.
elif(cut_num < N):
max_length = mean_length - 1
print(result)
'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글
백준 2606번(python) (0) | 2020.08.01 |
---|---|
백준 2805번(python) (0) | 2020.07.27 |
백준 10816번(python) (0) | 2020.07.19 |
백준 1920번(python) (0) | 2020.07.19 |
백준 2261번(python) (1) | 2020.07.17 |