結果
問題 | No.158 奇妙なお使い |
ユーザー |
![]() |
提出日時 | 2025-06-12 13:58:05 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,446 bytes |
コンパイル時間 | 219 ms |
コンパイル使用メモリ | 82,560 KB |
実行使用メモリ | 283,008 KB |
最終ジャッジ日時 | 2025-06-12 13:58:22 |
合計ジャッジ時間 | 7,141 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | -- * 4 |
other | AC * 3 WA * 1 TLE * 1 -- * 22 |
ソースコード
from collections import deque def main(): import sys input = sys.stdin.read().split() idx = 0 A1000 = int(input[idx]); idx +=1 A100 = int(input[idx]); idx +=1 A1 = int(input[idx]); idx +=1 Db = int(input[idx]); idx +=1 B1000 = int(input[idx]); idx +=1 B100 = int(input[idx]); idx +=1 B1 = int(input[idx]); idx +=1 Dc = int(input[idx]); idx +=1 C1000 = int(input[idx]); idx +=1 C100 = int(input[idx]); idx +=1 C1 = int(input[idx]); idx +=1 queue = deque() initial_state = (A1000, A100, A1) queue.append( (A1000, A100, A1, 0) ) visited = set() visited.add( (A1000, A100, A1) ) max_steps = 0 while queue: a1000, a100, a1, steps = queue.popleft() if steps > max_steps: max_steps = steps # Try B transaction max_x_b = min(a1000, Db // 1000) for x in range(max_x_b + 1): rem_x = Db - x * 1000 if rem_x < 0: continue max_y_b = min(a100, rem_x // 100) for y in range(max_y_b + 1): rem_y = rem_x - y * 100 if rem_y < 0: continue if a1 >= rem_y: new_a1000 = a1000 - x + B1000 new_a100 = a100 - y + B100 new_a1 = a1 - rem_y + B1 new_state = (new_a1000, new_a100, new_a1) if new_state not in visited: visited.add(new_state) queue.append( (new_a1000, new_a100, new_a1, steps + 1) ) # Try C transaction max_x_c = min(a1000, Dc // 1000) for x in range(max_x_c + 1): rem_x = Dc - x * 1000 if rem_x < 0: continue max_y_c = min(a100, rem_x // 100) for y in range(max_y_c + 1): rem_y = rem_x - y * 100 if rem_y < 0: continue if a1 >= rem_y: new_a1000 = a1000 - x + C1000 new_a100 = a100 - y + C100 new_a1 = a1 - rem_y + C1 new_state = (new_a1000, new_a100, new_a1) if new_state not in visited: visited.add(new_state) queue.append( (new_a1000, new_a100, new_a1, steps + 1) ) print(max_steps) if __name__ == "__main__": main()