結果
問題 |
No.859 路線A、路線B、路線C
|
ユーザー |
![]() |
提出日時 | 2025-06-12 21:45:09 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 3,779 bytes |
コンパイル時間 | 297 ms |
コンパイル使用メモリ | 82,052 KB |
実行使用メモリ | 54,164 KB |
最終ジャッジ日時 | 2025-06-12 21:49:34 |
合計ジャッジ時間 | 1,369 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 9 WA * 3 |
ソースコード
x, y, z = map(int, input().split()) S0, t0 = input().split() t0 = int(t0) S1, t1 = input().split() t1 = int(t1) if S0 == S1: print(abs(t0 - t1)) else: transfer_points = [ ('A1', 'A', 1), ('Ax', 'A', x), ('B1', 'B', 1), ('By', 'B', y), ('C1', 'C', 1), ('Cz', 'C', z), ] min_cost = float('inf') for T in transfer_points: T_name, T_route, T_num = T T_is_start = (T_num == 1) if T_route in ['A', 'B', 'C'] else False for U in transfer_points: U_name, U_route, U_num = U if T == U: continue U_is_start = (U_num == 1) if U_route in ['A', 'B', 'C'] else False if (T_is_start and U_is_start) or (not T_is_start and not U_is_start): # Compute cost from S0 to T if T_route == S0: cost_S0_T = abs(t0 - T_num) else: if S0 == 'A': s0_start = 1 s0_end = x elif S0 == 'B': s0_start = 1 s0_end = y else: s0_start = 1 s0_end = z cost_start = abs(t0 - s0_start) + 1 if T_is_start: cost_start += 0 else: if T_route == 'A': cost_start += T_num - 1 elif T_route == 'B': cost_start += T_num - 1 else: cost_start += T_num - 1 cost_end = abs(t0 - s0_end) + 1 if not T_is_start: cost_end += 0 else: if T_route == 'A': end_num = x elif T_route == 'B': end_num = y else: end_num = z cost_end += abs(T_num - end_num) cost_S0_T = min(cost_start, cost_end) # Compute cost from U to S1 if U_route == S1: cost_U_S1 = abs(t1 - U_num) else: if S1 == 'A': s1_start = 1 s1_end = x elif S1 == 'B': s1_start = 1 s1_end = y else: s1_start = 1 s1_end = z cost_start_u = abs(t1 - s1_start) + 1 if U_is_start: cost_start_u += 0 else: if U_route == 'A': cost_start_u += U_num - 1 elif U_route == 'B': cost_start_u += U_num - 1 else: cost_start_u += U_num - 1 cost_end_u = abs(t1 - s1_end) + 1 if not U_is_start: cost_end_u += 0 else: if U_route == 'A': end_num_u = x elif U_route == 'B': end_num_u = y else: end_num_u = z cost_end_u += abs(U_num - end_num_u) cost_U_S1 = min(cost_start_u, cost_end_u) total_cost = cost_S0_T + 1 + cost_U_S1 if total_cost < min_cost: min_cost = total_cost print(min_cost)