提出 #70626669


ソースコード 拡げる

import sys
from sortedcontainers import SortedList

input = sys.stdin.readline

N = int(input())
X = list(map(int, input().split()))

sl = SortedList()
d = [0] * (N + 1)
total_sum = 0
INF = 10**18
answers = []

X0 = 0
sl.add((X0, 0))

X1 = X[0]
d[0] = X1 - X0
d[1] = X1 - X0

total_sum = d[0] + d[1]
sl.add((X1, 1))
answers.append(str(total_sum))

for r in range(2, N + 1):
    Xr = X[r - 1]

    idx_s = sl.bisect_left((Xr, r))
    idx_p = idx_s - 1

    (Xp, p) = sl[idx_p]

    if idx_s < len(sl):
        (Xs, s) = sl[idx_s]
    else:
        (Xs, s) = (INF, -1)
        
    new_dr = min(Xr - Xp, Xs - Xr)
    d[r] = new_dr
    total_sum += new_dr
    
    old_dp = d[p]
    
    if idx_p > 0:
        Xpp = sl[idx_p - 1][0]
    else:
        Xpp = -INF
    
    new_dp = min(Xp - Xpp, Xr - Xp)
    d[p] = new_dp
    total_sum = total_sum - old_dp + new_dp
    
    if s != -1:
        old_ds = d[s]

        idx_ss = idx_s + 1
        if idx_ss < len(sl):
            Xss = sl[idx_ss][0]
        else:
            Xss = INF
        
        new_ds = min(Xs - Xr, Xss - Xs)
        d[s] = new_ds
        total_sum = total_sum - old_ds + new_ds

    sl.add((Xr, r))
    
    answers.append(str(total_sum))

print("\n".join(answers))

提出情報

提出日時
問題 D - Neighbor Distance
ユーザ exophia
言語 Python (PyPy 3.11-v7.3.20)
得点 400
コード長 1310 Byte
結果 AC
実行時間 2504 ms
メモリ 269016 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 400 / 400
結果
AC × 1
AC × 31
セット名 テストケース
Sample sample_01.txt
All sample_01.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt
ケース名 結果 実行時間 メモリ
sample_01.txt AC 137 ms 114048 KiB
test_01.txt AC 136 ms 113644 KiB
test_02.txt AC 136 ms 113636 KiB
test_03.txt AC 506 ms 204504 KiB
test_04.txt AC 512 ms 204804 KiB
test_05.txt AC 504 ms 204628 KiB
test_06.txt AC 456 ms 202064 KiB
test_07.txt AC 457 ms 201772 KiB
test_08.txt AC 455 ms 202284 KiB
test_09.txt AC 999 ms 214640 KiB
test_10.txt AC 996 ms 213832 KiB
test_11.txt AC 982 ms 214272 KiB
test_12.txt AC 995 ms 215196 KiB
test_13.txt AC 577 ms 205520 KiB
test_14.txt AC 628 ms 205764 KiB
test_15.txt AC 590 ms 205524 KiB
test_16.txt AC 607 ms 205896 KiB
test_17.txt AC 2418 ms 268448 KiB
test_18.txt AC 2444 ms 266608 KiB
test_19.txt AC 2504 ms 268060 KiB
test_20.txt AC 2441 ms 267160 KiB
test_21.txt AC 2433 ms 266768 KiB
test_22.txt AC 2447 ms 266652 KiB
test_23.txt AC 2417 ms 267424 KiB
test_24.txt AC 2419 ms 267824 KiB
test_25.txt AC 2413 ms 267088 KiB
test_26.txt AC 2468 ms 268448 KiB
test_27.txt AC 2412 ms 269016 KiB
test_28.txt AC 2413 ms 266036 KiB
test_29.txt AC 2428 ms 267440 KiB
test_30.txt AC 2444 ms 266316 KiB