結果
| 問題 | No.198 キャンディー・ボックス2 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2015-04-29 00:20:47 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 31 ms / 1,000 ms |
| コード長 | 792 bytes |
| コンパイル時間 | 90 ms |
| コンパイル使用メモリ | 12,160 KB |
| 実行使用メモリ | 10,624 KB |
| 最終ジャッジ日時 | 2025-11-26 11:34:12 |
| 合計ジャッジ時間 | 1,855 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 27 |
ソースコード
def read_data():
B = int(input())
N = int(input())
Cs = [int(input()) for i in range(N)]
return B, N, Cs
def solve(B, N, Cs):
Cs.sort()
median = Cs[N//2]
min_move = sum([abs(median - c) for c in Cs])
surplus = sum([c - median for c in Cs])
if surplus + B >= 0:
return min_move
return binary_search(Cs, median, B)
def binary_search(Cs, median, B):
lower = 0
upper = median
while upper > lower + 1:
middle = (lower + upper) // 2
surplus = sum([c - middle for c in Cs])
if surplus + B >= 0:
lower = middle
else:
upper = middle
min_move = sum([abs(lower - c) for c in Cs])
return min_move
if __name__ == '__main__':
B, N, Cs = read_data()
print(solve(B, N, Cs))