結果
| 問題 | No.67 よくある棒を切る問題 (1) | 
| コンテスト | |
| ユーザー |  hang_hang_cln | 
| 提出日時 | 2018-06-14 23:15:45 | 
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 2,247 ms / 5,000 ms | 
| コード長 | 764 bytes | 
| コンパイル時間 | 258 ms | 
| コンパイル使用メモリ | 12,032 KB | 
| 実行使用メモリ | 32,796 KB | 
| 最終ジャッジ日時 | 2025-03-03 11:16:38 | 
| 合計ジャッジ時間 | 45,833 ms | 
| ジャッジサーバーID (参考情報) | judge5 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 30 | 
ソースコード
N = int(input())
stickList = list(map(int,input().split()))
K = int(input())
def countCuttedSticks(stickList, cutLength):
    count = 0
    for stick in stickList:
        count += stick // cutLength
    
    return count
    
def main():
    low = 0
    high = max(stickList)
    if countCuttedSticks(stickList, high) == K:
        print(high)
    else:
        previousAns = -1
        for i in range(100):
            ans = (low + high) / 2
            if countCuttedSticks(stickList, ans) >= K: # 本数を少なくするために切る長さを長くする
                low = ans
            else: # 本数を多くするために切る長さを短くする
                high = ans
            
        print(ans)
if __name__ == '__main__':
    main()
            
            
            
        