結果

問題 No.3072 Speedrun Query
ユーザー 遭難者
提出日時 2025-03-14 23:07:16
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 775 ms / 2,500 ms
コード長 1,547 bytes
コンパイル時間 447 ms
コンパイル使用メモリ 82,224 KB
実行使用メモリ 158,628 KB
最終ジャッジ日時 2025-03-14 23:07:34
合計ジャッジ時間 15,747 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 21
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys

input = sys.stdin.readline
n, ka, kb = map(int, input().split())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
sa = n
for v in b:
    ok, ng = 0, ka
    while ng - ok != 1:
        vs = (ok + ng) >> 1
        if a[vs] < v:
            ok = vs
        else:
            ng = vs
    sa = min(sa, abs(a[ok] - v))
    if ng != ka:
        sa = min(sa, abs(a[ng] - v))
Q = int(input())
for _ in range(Q):
    s, t = map(int, input().split())
    ok, ng = 0, ka
    while ng - ok != 1:
        vs = (ok + ng) >> 1
        if a[vs] < s:
            ok = vs
        else:
            ng = vs
    cas = abs(a[ok] - s)
    if ng != ka:
        cas = min(cas, abs(a[ng] - s))
    ok, ng = 0, ka
    while ng - ok != 1:
        vs = (ok + ng) >> 1
        if a[vs] < t:
            ok = vs
        else:
            ng = vs
    cat = abs(a[ok] - t)
    if ng != ka:
        cat = min(cat, abs(a[ng] - t))
    ok, ng = 0, kb
    while ng - ok != 1:
        vs = (ok + ng) >> 1
        if b[vs] < s:
            ok = vs
        else:
            ng = vs
    cbs = abs(b[ok] - s)
    if ng != kb:
        cbs = min(cbs, abs(b[ng] - s))
    ok, ng = 0, kb
    while ng - ok != 1:
        vs = (ok + ng) >> 1
        if b[vs] < t:
            ok = vs
        else:
            ng = vs
    cbt = abs(b[ok] - t)
    if ng != kb:
        cbt = min(cbt, abs(b[ng] - t))
    ans = t - s
    ans = min(ans, cas + cat)
    ans = min(ans, cbs + cbt)
    ans = min(ans, cas + cbt + sa)
    ans = min(ans, cbs + cat + sa)
    print(ans)
0