結果

問題 No.1950 片道きゃっちぼーる
ユーザー gew1fw
提出日時 2025-06-12 15:08:56
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,120 bytes
コンパイル時間 176 ms
コンパイル使用メモリ 82,908 KB
実行使用メモリ 157,800 KB
最終ジャッジ日時 2025-06-12 15:09:28
合計ジャッジ時間 9,046 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 15 WA * 8
権限があれば一括ダウンロードができます

ソースコード

diff #

import bisect

def main():
    import sys
    input = sys.stdin.read
    data = input().split()
    idx = 0
    N = int(data[idx])
    idx += 1
    X = list(map(int, data[idx:idx+N]))
    idx += N
    A = list(map(int, data[idx:idx+N]))
    idx += N
    
    max_r = [0] * N
    
    # Process right throws from right to left
    for i in reversed(range(N)):
        target = X[i] + A[i]
        j = bisect.bisect_left(X, target)
        if j < N and X[j] == target:
            max_r[i] = A[i] + max_r[j]
        else:
            max_r[i] = A[i]
    
    max_l = [0] * N
    
    # Process left throws from left to right
    for i in range(N):
        target = X[i] - A[i]
        k = bisect.bisect_left(X, target)
        if k < N and X[k] == target:
            current = (X[k] + max_r[k]) - X[i]
            if current > 0:
                max_l[i] = current
            else:
                max_l[i] = 0
        else:
            max_l[i] = 0
    
    # Compute the answer
    ans = [max(max_r[i], max_l[i]) for i in range(N)]
    
    for a in ans:
        print(a)
        
if __name__ == '__main__':
    main()
0