結果
| 問題 |
No.1950 片道きゃっちぼーる
|
| コンテスト | |
| ユーザー |
titia
|
| 提出日時 | 2022-05-20 22:39:25 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
AC
|
| 実行時間 | 1,446 ms / 3,000 ms |
| コード長 | 856 bytes |
| コンパイル時間 | 84 ms |
| コンパイル使用メモリ | 12,928 KB |
| 実行使用メモリ | 121,404 KB |
| 最終ジャッジ日時 | 2024-09-20 08:58:42 |
| 合計ジャッジ時間 | 21,981 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 23 |
ソースコード
import sys
input = sys.stdin.readline
from operator import itemgetter
N=int(input())
X=list(map(int,input().split()))
A=list(map(int,input().split()))
X_INV=dict()
for i in range(N):
X_INV[X[i]]=i
E=[[] for i in range(N)]
E_INV=[[] for i in range(N)]
for i in range(N):
x=X[i]
a=A[i]
if x+a in X_INV:
k=X_INV[x+a]
E[i].append(k)
E_INV[k].append(i)
if x-a in X_INV:
k=X_INV[x-a]
E[i].append(k)
E_INV[k].append(i)
score=[(X[i]+A[i],i) for i in range(N)]
score.sort(key=itemgetter(0),reverse=True)
ANS=[-1000000]*N
for sc,ind in score:
Q=[ind]
while Q:
x=Q.pop()
if ANS[x]>0:
continue
ANS[x]=sc
for to in E_INV[x]:
if ANS[to]<0:
Q.append(to)
for i in range(N):
print(ANS[i]-X[i])
titia