結果
問題 | No.1071 ベホマラー |
ユーザー | kcvlex |
提出日時 | 2020-06-05 21:49:12 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 486 ms / 2,000 ms |
コード長 | 699 bytes |
コンパイル時間 | 224 ms |
コンパイル使用メモリ | 82,404 KB |
実行使用メモリ | 86,240 KB |
最終ジャッジ日時 | 2024-12-17 14:16:17 |
合計ジャッジ時間 | 5,065 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 20 |
ソースコード
def ceil_div(x, y): ret = x // y if x % y == 0: return ret else: return ret + 1; def calc(n, k, x, y, av, ycnt): ret = y * ycnt for e in av: rest = e - k * ycnt if rest <= 0: continue ret += x * ceil_div(rest, k) return ret tmp = tuple(list(map(int, input().split(' ')))) a = list(map(int, input().split(' '))) av = [ e - 1 for e in a ] n, k, x, y = tmp x0 = 0 x3 = int(1e18) f = lambda arg: calc(n, k, x, y, av, arg) while 2 < x3 - x0: x1 = (2 * x0 + x3) // 3 x2 = (x0 + 2 * x3) // 3 f1 = f(x1) f2 = f(x2) if f1 < f2: x3 = x2 else: x0 = x1 print(min([f(x0), f(x0+1), f(x0+2)]))