結果
| 問題 |
No.1071 ベホマラー
|
| コンテスト | |
| ユーザー |
FromBooska
|
| 提出日時 | 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)
FromBooska