結果

問題 No.281 門松と魔法(1)
ユーザー gew1fw
提出日時 2025-06-12 21:23:43
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,178 bytes
コンパイル時間 182 ms
コンパイル使用メモリ 82,252 KB
実行使用メモリ 69,248 KB
最終ジャッジ日時 2025-06-12 21:25:24
合計ジャッジ時間 6,389 ms
ジャッジサーバーID
(参考情報)
judge5 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 50 WA * 7
権限があれば一括ダウンロードができます

ソースコード

diff #

d = int(input())
h1 = int(input())
h2 = int(input())
h3 = int(input())

if d == 0:
    # Check if all are distinct and middle is max or min
    if h1 == h2 or h2 == h3 or h1 == h3:
        print(-1)
    else:
        if (h2 == max(h1, h2, h3)) or (h2 == min(h1, h2, h3)):
            print(0)
        else:
            print(-1)
else:
    def get_candidates(H):
        candidates = []
        max_k = 200
        for k in range(max_k + 1):
            h = max(0, H - k * d)
            candidates.append((k, h))
        return candidates

    c1 = get_candidates(h1)
    c2 = get_candidates(h2)
    c3 = get_candidates(h3)

    min_total = float('inf')
    found = False

    for (k1, h1_val) in c1:
        for (k2, h2_val) in c2:
            for (k3, h3_val) in c3:
                if h1_val == h2_val or h2_val == h3_val or h1_val == h3_val:
                    continue
                if (h2_val == max(h1_val, h2_val, h3_val)) or (h2_val == min(h1_val, h2_val, h3_val)):
                    total = k1 + k2 + k3
                    if total < min_total:
                        min_total = total
                        found = True

    print(min_total if found else -1)
0