結果
| 問題 |
No.2643 Many Range Sums Problems
|
| コンテスト | |
| ユーザー |
Koi
|
| 提出日時 | 2024-02-11 19:43:41 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 4,948 ms / 8,000 ms |
| コード長 | 1,342 bytes |
| コンパイル時間 | 517 ms |
| コンパイル使用メモリ | 82,720 KB |
| 実行使用メモリ | 94,076 KB |
| 最終ジャッジ日時 | 2024-09-28 18:27:15 |
| 合計ジャッジ時間 | 69,592 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 34 |
ソースコード
from collections import deque
N,K=map(int,input().split())
R=[]
G=[[] for _ in range(N+1)]
for i in range(N):
r,x=map(int,input().split())
R.append(r)
G[i].append([r,x])
G[r].append([i,-x])
answers=[]
que=deque([0])
for i in range(N):
Group_num=[-1]*(N+1)
que=deque([0])
Group_num[0]=1
B=[0]*(N+1)
seen=[False]*(N+1)
seen[0]=True
que=deque([0])
diff_L=-10**19
diff_R=10**19
ans="Yes"
while len(que):
p=que.popleft()
for (q,x) in G[p]:
if(not seen[q]):
if((p==i and q==R[i]) or (q==i and p==R[i])):
Group_num[q]=2
else:
Group_num[q]=Group_num[p]
que.append(q)
seen[q]=True
B[q]=B[p]+x
for i in range(N):
if(Group_num[i]==Group_num[i+1]):
if(B[i+1]-B[i]<0 or B[i+1]-B[i]>K):
ans="No"
else:
if(Group_num[i]==1 and Group_num[i+1]==2):
Left=B[i+1]-B[i]-K
Right=B[i+1]-B[i]
else:
Left=B[i]-B[i+1]
Right=K+B[i]-B[i+1]
diff_L=max(diff_L,Left)
diff_R=min(diff_R,Right)
if(diff_L>diff_R):
ans="No"
answers.append(ans)
for ans in answers:
print(ans)
Koi