結果

問題 No.1950 片道きゃっちぼーる
ユーザー lilictakalilictaka
提出日時 2022-05-21 00:25:47
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 1,018 ms / 3,000 ms
コード長 913 bytes
コンパイル時間 209 ms
コンパイル使用メモリ 81,852 KB
実行使用メモリ 256,632 KB
最終ジャッジ日時 2023-10-20 15:14:00
合計ジャッジ時間 15,145 ms
ジャッジサーバーID
(参考情報)
judge12 / judge13
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 44 ms
55,552 KB
testcase_01 AC 43 ms
55,552 KB
testcase_02 AC 41 ms
55,552 KB
testcase_03 AC 682 ms
256,360 KB
testcase_04 AC 702 ms
256,632 KB
testcase_05 AC 43 ms
55,552 KB
testcase_06 AC 308 ms
220,856 KB
testcase_07 AC 470 ms
239,488 KB
testcase_08 AC 1,018 ms
241,864 KB
testcase_09 AC 596 ms
234,516 KB
testcase_10 AC 631 ms
224,336 KB
testcase_11 AC 567 ms
227,772 KB
testcase_12 AC 563 ms
227,808 KB
testcase_13 AC 426 ms
230,356 KB
testcase_14 AC 396 ms
212,308 KB
testcase_15 AC 914 ms
226,332 KB
testcase_16 AC 299 ms
185,544 KB
testcase_17 AC 39 ms
55,552 KB
testcase_18 AC 659 ms
254,388 KB
testcase_19 AC 928 ms
226,344 KB
testcase_20 AC 555 ms
227,792 KB
testcase_21 AC 400 ms
220,492 KB
testcase_22 AC 398 ms
220,232 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

from collections import defaultdict,deque
N = int(input()) 
X = list(map(int,input().split()))
A = list(map(int,input().split()))
vec = set()
for i in range(N):
    x = X[i]
    a = A[i]
    vec.add(x)
    vec.add(x-a)
    vec.add(x+a)
memo = defaultdict(int)
vec = sorted(list(vec))
for i in range(len(vec)):
    memo[vec[i]] = i
edge = [[] for _ in range(len(vec))]
Xset = set(X)
for i in range(N):
    x = X[i]
    a = A[i]
    index = memo[x+a]
    edge[index].append(memo[x])
    index2 = memo[x-a]
    edge[index2].append(memo[x])
INF = float('inf')
dp = [-INF for _ in range(len(vec))]
q = deque()
for v in vec[::-1]:
    if dp[memo[v]] == -INF:
        q.append(memo[v])
        dp[memo[v]] = v
    while q:
        now = q.popleft()
        for nv in edge[now]:
            if dp[nv] == -INF:
                q.append(nv)
                dp[nv] = v
for x in X:
    index = memo[x]
    print(dp[index]-x)
0