結果
| 問題 |
No.126 2基のエレベータ
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-04-16 01:00:59 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,665 bytes |
| コンパイル時間 | 183 ms |
| コンパイル使用メモリ | 81,656 KB |
| 実行使用メモリ | 53,964 KB |
| 最終ジャッジ日時 | 2025-04-16 01:02:27 |
| 合計ジャッジ時間 | 1,884 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))
lam6er