結果
| 問題 | 
                            No.2099 [Cherry Alpha B] Time Machine
                             | 
                    
| コンテスト | |
| ユーザー | 
                             lam6er
                         | 
                    
| 提出日時 | 2025-03-31 17:55:43 | 
| 言語 | PyPy3  (7.3.15)  | 
                    
| 結果 | 
                             
                                WA
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 2,067 bytes | 
| コンパイル時間 | 139 ms | 
| コンパイル使用メモリ | 82,176 KB | 
| 実行使用メモリ | 75,848 KB | 
| 最終ジャッジ日時 | 2025-03-31 17:56:47 | 
| 合計ジャッジ時間 | 7,930 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge5 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 67 WA * 5 | 
ソースコード
def main():
    import sys
    import math
    T = int(sys.stdin.readline())
    X, A = map(int, sys.stdin.readline().split())
    Y, B = map(int, sys.stdin.readline().split())
    min_cost = float('inf')
    # Case 0: Only waiting
    if T > 0:
        min_cost = min(min_cost, T)
    # Consider a=0
    if A > 0:
        a = 0
        numerator = a * A - T
        if numerator <= 0:
            b_min = 0
        else:
            b_min = max(0, (numerator + B - 1) // B)
        s = a * A - b_min * B
        if s <= T:
            cost = a * X + b_min * Y + (T - s)
            if cost < min_cost:
                min_cost = cost
    # Iterate a from 0 to 200,000
    max_a = 200000
    for a in range(max_a + 1):
        numerator = a * A - T
        if numerator <= 0:
            b = 0
        else:
            b = (numerator + B - 1) // B  # ceil division
        b = max(b, 0)
        s = a * A - b * B
        if s <= T:
            cost = a * X + b * Y + (T - s)
            if cost < min_cost:
                min_cost = cost
    # Iterate b from 0 to 200,000
    max_b = 200000
    for b in range(max_b + 1):
        if B == 0:
            continue  # shouldn't happen per input constraints
        s_part = -b * B
        target = T - s_part  # required a*A = target
        if A == 0:
            a = 0 if target <= 0 else -1
        else:
            a = (target) // A
            if a * A != target:
                a = (target) // A  # floor
        for delta in [a-1, a, a+1, a+2, a+3]:
            if delta < 0:
                continue
            aa = delta
            s = aa * A - b * B
            if s <= T:
                cost = aa * X + b * Y + (T - s)
                if cost < min_cost:
                    min_cost = cost
    # Handle a=0 for T < 0
    if T < 0:
        required_b = (-T + B - 1) // B  # ceil(-T / B)
        required_b = max(required_b, 0)
        cost = required_b * Y + (T + required_b * B)
        if cost < min_cost:
            min_cost = cost
    print(min_cost)
if __name__ == '__main__':
    main()
            
            
            
        
            
lam6er