結果

問題 No.2099 [Cherry Alpha B] Time Machine
ユーザー lam6er
提出日時 2025-04-15 23:55:56
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,126 bytes
コンパイル時間 349 ms
コンパイル使用メモリ 82,900 KB
実行使用メモリ 60,480 KB
最終ジャッジ日時 2025-04-15 23:57:42
合計ジャッジ時間 5,165 ms
ジャッジサーバーID
(参考情報)
judge1 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 55 WA * 17
権限があれば一括ダウンロードができます

ソースコード

diff #

T = int(input())
X, A = map(int, input().split())
Y, B = map(int, input().split())

min_cost = float('inf')

if T > 0:
    # Candidate 1: Only waiting
    min_cost = T
    
    # Candidate 2: Using only A
    k_max = T // A
    cost = X * k_max + (T - k_max * A)
    if cost < min_cost:
        min_cost = cost
    
    # Candidate 3: Using A once more than k_max and then B
    k = k_max + 1
    m_min = max(0, (k * A - T + B - 1) // B)
    if k * A - m_min * B <= T:
        cost = X * k + Y * m_min + (T - (k * A - m_min * B))
        if cost < min_cost:
            min_cost = cost
    
    # Candidate 4: Explore combinations of A and B
    k_max_candidate = (T + 2 * B) // A + 2
    for k in range(0, k_max_candidate + 1):
        m_min = max(0, (k * A - T + B - 1) // B)
        if k * A - m_min * B > T:
            continue
        cost = X * k + Y * m_min + (T - (k * A - m_min * B))
        if cost < min_cost:
            min_cost = cost
else:
    # T is negative, use B to go back
    abs_T = -T
    m = (abs_T + B - 1) // B  # ceil division
    cost = Y * m + (m * B - abs_T)
    min_cost = cost

print(min_cost)
0