結果
問題 |
No.1071 ベホマラー
|
ユーザー |
![]() |
提出日時 | 2023-03-12 17:09:55 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 774 bytes |
コンパイル時間 | 255 ms |
コンパイル使用メモリ | 82,496 KB |
実行使用メモリ | 109,776 KB |
最終ジャッジ日時 | 2024-09-18 07:05:53 |
合計ジャッジ時間 | 3,384 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 12 WA * 8 |
ソースコード
# 三分探索で解いたが想定解法をやってみる # まずHPはすべてK何回分かに書き換える # 回復必要な残り人数kとして、k*X > yならばyベホマラー、elseベホイミ N, K, X, Y = map(int, input().split()) A = list(map(int, input().split())) A2 = [(a-1+(K-1))//K for a in A] from collections import Counter counted = Counter(A2) counted_keys = [a for a in counted.keys()] counted_keys.sort() #print(A2) #print(counted) #print(counted_keys) ans = 0 cum = 0 k = N for key in counted_keys: if Y < k*X: ans += max(0, key-cum)*Y k -= counted[key] cum += key-cum else: ans += max(0, key-cum)*X k -= counted[key] #print('key', key, Y < k*X, 'ans', ans, 'k', k, 'cum', cum) print(ans)