結果

問題 No.1950 片道きゃっちぼーる
ユーザー lilictakalilictaka
提出日時 2022-05-21 00:25:47
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 1,012 ms / 3,000 ms
コード長 913 bytes
コンパイル時間 277 ms
コンパイル使用メモリ 82,304 KB
実行使用メモリ 257,304 KB
最終ジャッジ日時 2024-09-20 10:44:05
合計ジャッジ時間 13,587 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 41 ms
53,632 KB
testcase_01 AC 42 ms
53,760 KB
testcase_02 AC 42 ms
53,632 KB
testcase_03 AC 566 ms
257,100 KB
testcase_04 AC 590 ms
257,304 KB
testcase_05 AC 41 ms
53,888 KB
testcase_06 AC 314 ms
221,512 KB
testcase_07 AC 478 ms
240,084 KB
testcase_08 AC 1,012 ms
242,836 KB
testcase_09 AC 549 ms
234,624 KB
testcase_10 AC 625 ms
224,696 KB
testcase_11 AC 573 ms
228,420 KB
testcase_12 AC 568 ms
228,184 KB
testcase_13 AC 429 ms
231,148 KB
testcase_14 AC 386 ms
212,628 KB
testcase_15 AC 915 ms
226,664 KB
testcase_16 AC 307 ms
185,892 KB
testcase_17 AC 44 ms
53,632 KB
testcase_18 AC 673 ms
254,604 KB
testcase_19 AC 910 ms
226,648 KB
testcase_20 AC 555 ms
228,116 KB
testcase_21 AC 404 ms
221,068 KB
testcase_22 AC 411 ms
220,824 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