結果
問題 |
No.158 奇妙なお使い
|
ユーザー |
![]() |
提出日時 | 2025-06-12 13:49:20 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,331 bytes |
コンパイル時間 | 262 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 137,832 KB |
最終ジャッジ日時 | 2025-06-12 13:49:33 |
合計ジャッジ時間 | 3,655 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 16 WA * 11 |
ソースコード
from collections import deque def main(): a1000, a100, a1 = map(int, input().split()) Db = int(input()) B = list(map(int, input().split())) Dc = int(input()) C = list(map(int, input().split())) Br = (B[0], B[1], B[2]) Cr = (C[0], C[1], C[2]) visited = set() q = deque() initial_state = (a1000, a100, a1) q.append((a1000, a100, a1, 0)) visited.add(initial_state) max_count = 0 while q: current = q.popleft() a1k, a100_, a1_, count = current max_count = max(max_count, count) # Try B's operation can_b = False for x in range(min(a1k, Db // 1000) + 1): remaining = Db - x * 1000 if remaining < 0: continue max_y = min(a100_, remaining // 100) for y in range(max_y, -1, -1): z = remaining - y * 100 if z >= 0 and z <= a1_: new_a1k = a1k - x + Br[0] new_a100 = a100_ - y + Br[1] new_a1 = a1_ - z + Br[2] new_state = (new_a1k, new_a100, new_a1) if new_state not in visited: visited.add(new_state) q.append((new_a1k, new_a100, new_a1, count + 1)) can_b = True break if can_b: break # Try C's operation can_c = False for x in range(min(a1k, Dc // 1000) + 1): remaining = Dc - x * 1000 if remaining < 0: continue max_y = min(a100_, remaining // 100) for y in range(max_y, -1, -1): z = remaining - y * 100 if z >= 0 and z <= a1_: new_a1k = a1k - x + Cr[0] new_a100 = a100_ - y + Cr[1] new_a1 = a1_ - z + Cr[2] new_state = (new_a1k, new_a100, new_a1) if new_state not in visited: visited.add(new_state) q.append((new_a1k, new_a100, new_a1, count + 1)) can_c = True break if can_c: break print(max_count) if __name__ == "__main__": main()