結果

問題 No.3252 Constrained Moving
ユーザー urunea
提出日時 2025-09-05 21:52:46
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 113 ms / 2,000 ms
コード長 677 bytes
コンパイル時間 407 ms
コンパイル使用メモリ 82,636 KB
実行使用メモリ 107,812 KB
最終ジャッジ日時 2025-09-05 21:52:52
合計ジャッジ時間 4,917 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 30
権限があれば一括ダウンロードができます

ソースコード

diff #

N, S, T, K = map(int, input().split())
A = list(map(int, input().split()))
S -= 1
T -= 1

# ケース1: 直接つながる
if A[S] + A[T] <= K:
    print(1)
    exit()

m = min(A)

# ケース2: min を経由
if A[S] + m <= K and A[T] + m <= K:
    print(2)
    exit()

# ケース3: 3 ステップ以内で到達できるか
# 「S -> x -> min -> T」または「S -> min -> x -> T」
# つまり中継点 x を 1つ入れて繋がるか
ok = False
for x in A:
    if A[S] + x <= K and x + m <= K and A[T] + m <= K:
        ok = True
        break
    if A[T] + x <= K and x + m <= K and A[S] + m <= K:
        ok = True
        break

if ok:
    print(3)
else:
    print(-1)
0