这道题是经典的贪心+二分,我们通过二分法不断尝试可行的长度,从而确认最长的长度是多少。思路挺简单的,直接上代码叭~
n, k = map(int, input().split())
nums = [int(float(input())*100) for _ in range(n)]
total = sum(nums)
if total < k:
print('0.00')
exit()
left, right = 1, max(nums)
while left <= right:
mid = (left+right)//2
check = 0
for num in nums:
check += num//mid
if check < k:
right = mid-1
else:
left = mid+1
print(f'{right/100:.2f}')