結果
問題 |
No.126 2基のエレベータ
|
ユーザー |
![]() |
提出日時 | 2025-04-16 16:40:44 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,665 bytes |
コンパイル時間 | 173 ms |
コンパイル使用メモリ | 82,116 KB |
実行使用メモリ | 54,008 KB |
最終ジャッジ日時 | 2025-04-16 16:41:52 |
合計ジャッジ時間 | 2,328 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 21 WA * 6 |
ソースコード
A, B, S = map(int, input().split()) def calculate_elevator_cost(A_pos, B_pos, S): # Case 1: Press down button if S == 1: elevator_down = 'A' else: dist_A_down = abs(A_pos - S) dist_B_down = abs(B_pos - S) if dist_A_down < dist_B_down: elevator_down = 'A' elif dist_B_down < dist_A_down: elevator_down = 'B' else: elevator_down = 'A' # tie, A is prioritized # Case 2: Press up button dist_A_up = abs(A_pos - S) dist_B_up = abs(B_pos - S) if dist_A_up < dist_B_up: elevator_up = 'A' elif dist_B_up < dist_A_up: elevator_up = 'B' else: elevator_up = 'A' # tie, A is prioritized # Calculate costs for each case min_cost = float('inf') # Evaluate elevator_down case if elevator_down == 'A': cost = abs(A_pos - S) + S min_cost = min(min_cost, cost) else: # B is called, need to transfer to A's initial position or 1 if A is 0 X = A if A != 0 else 1 cost_B = abs(B - S) + abs(S - X) cost_A = abs(A - X) + X total = cost_B + cost_A min_cost = min(min_cost, total) # Evaluate elevator_up case if elevator_up == 'A': cost = abs(A - S) + S min_cost = min(min_cost, cost) else: # B is called, need to transfer to A's initial position or 1 if A is 0 X = A if A != 0 else 1 cost_B = abs(B - S) + abs(S - X) cost_A = abs(A - X) + X total = cost_B + cost_A min_cost = min(min_cost, total) return min_cost print(calculate_elevator_cost(A, B, S))