結果
問題 |
No.281 門松と魔法(1)
|
ユーザー |
![]() |
提出日時 | 2025-04-16 00:10:48 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,594 bytes |
コンパイル時間 | 234 ms |
コンパイル使用メモリ | 82,320 KB |
実行使用メモリ | 54,232 KB |
最終ジャッジ日時 | 2025-04-16 00:12:29 |
合計ジャッジ時間 | 3,722 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 55 WA * 2 |
ソースコード
d = int(input()) H = [int(input()) for _ in range(3)] h1, h2, h3 = H def solve_case1(d, h1, h2, h3): min_steps = float('inf') # Try up to 200 steps for k2 for k2 in range(200): H2_prime = h2 - k2 * d if H2_prime <= 0: break # Compute k1_min target = H2_prime - 1 if h1 > target: numerator = h1 - target k1_min = (numerator + d - 1) // d else: k1_min = 0 H1_prime = max(0, h1 - k1_min * d) # Compute k3_min if h3 > target: numerator = h3 - target k3_min = (numerator + d - 1) // d else: k3_min = 0 H3_prime = max(0, h3 - k3_min * d) # Check conditions if H1_prime >= H2_prime or H3_prime >= H2_prime: continue if H1_prime != H3_prime: current = k2 + k1_min + k3_min if current < min_steps: min_steps = current else: if H1_prime == 0: continue else: current = k2 + k1_min + k3_min + 1 if current < min_steps: min_steps = current return min_steps if min_steps != float('inf') else -1 def solve_case2(d, h1, h2, h3): min_steps = float('inf') # Try up to 200 steps for k2 for k2 in range(200): H2_prime = h2 - k2 * d if H2_prime < 0: H2_prime = 0 required = H2_prime + 1 if h1 < required or h3 < required: continue if h1 != h3: current = k2 if current < min_steps: min_steps = current else: # Check if we can apply one step to either if (h1 - d) >= required: current = k2 + 1 if current < min_steps: min_steps = current elif (h3 - d) >= required: current = k2 + 1 if current < min_steps: min_steps = current return min_steps if min_steps != float('inf') else -1 if d == 0: # Check if already valid if h1 != h2 and h2 != h3 and h1 != h3: if (h2 == max(H) or h2 == min(H)) and (h1 < h2 > h3 or h1 > h2 < h3): print(0) else: print(-1) else: print(-1) else: case1 = solve_case1(d, h1, h2, h3) case2 = solve_case2(d, h1, h2, h3) res = [] if case1 != -1: res.append(case1) if case2 != -1: res.append(case2) if not res: print(-1) else: print(min(res))