結果
| 問題 |
No.158 奇妙なお使い
|
| コンテスト | |
| ユーザー |
gew1fw
|
| 提出日時 | 2025-06-12 18:59:19 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,446 bytes |
| コンパイル時間 | 315 ms |
| コンパイル使用メモリ | 82,704 KB |
| 実行使用メモリ | 284,664 KB |
| 最終ジャッジ日時 | 2025-06-12 18:59:26 |
| 合計ジャッジ時間 | 7,380 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| 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()
gew1fw