結果
問題 |
No.68 よくある棒を切る問題 (2)
|
ユーザー |
![]() |
提出日時 | 2025-06-12 19:26:32 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,219 bytes |
コンパイル時間 | 154 ms |
コンパイル使用メモリ | 82,704 KB |
実行使用メモリ | 123,440 KB |
最終ジャッジ日時 | 2025-06-12 19:26:52 |
合計ジャッジ時間 | 13,034 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | TLE * 1 -- * 9 |
ソースコード
def main(): import sys input = sys.stdin.read data = input().split() index = 0 n = int(data[index]) index += 1 L = list(map(int, data[index:index + n])) index += n L.sort(reverse=True) S = sum(L) q = int(data[index]) index += 1 K = list(map(int, data[index:index + q])) results = [] epsilon = 1e-12 for k in K: if k == 1: results.append(L[0]) continue low = 0.0 high = S / k if high == 0: results.append(0.0) continue for _ in range(100): if high - low < epsilon: break mid = (low + high) / 2 cnt = 0 for l in L: if mid == 0: break if l < mid: break add = l // mid cnt += add if cnt >= k: break if cnt >= k: low = mid else: high = mid results.append(high) for res in results: print("{0:.15f}".format(res)) if __name__ == "__main__": main()