Pythonで理解する蟻本「3-1 Cable master(POJ No.1064)」(p.129)
この記事は「プログラミングコンテストチャレンジブック第2版」(蟻本)の
「3-1 Cable master(POJ No.1064)」(p.129)
のコードをPythonで書き直したものとなっています。
入力
入力例
4 11
8.02 7.43 4.57 5.39
解答
import math
INF = 10 ** 5 + 1
# 入力
N, K = map(int,input().split())
L = list(map(float,input().split()))
# 条件を満たすか判定
def C(x):
num = 0
for i in range(N):
num += L[i] // x
return num >= K
# 解の存在範囲を初期化
lb = 0
ub = INF
# 解の存在範囲が十分狭くなるまで繰り返す
for i in range(100):
mid = (lb + ub) / 2
if C(mid):
lb = mid
else:
ub = mid
print(math.floor(ub * 100) / 100)