結果
| 問題 |
No.1024 Children in a Row
|
| コンテスト | |
| ユーザー |
chocorusk
|
| 提出日時 | 2020-04-08 12:44:40 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,632 bytes |
| コンパイル時間 | 174 ms |
| コンパイル使用メモリ | 13,184 KB |
| 実行使用メモリ | 127,252 KB |
| 最終ジャッジ日時 | 2024-09-14 06:48:38 |
| 合計ジャッジ時間 | 5,026 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 7 TLE * 1 -- * 19 |
ソースコード
from collections import deque
import bisect
n, m=map(int, input().split())
a=[0]*m
b=[0]*m
k=[0]*m
c=[i for i in range(n)]
cr=[0]*(n+m)
for i in range(n):
cr[i]=i
g=[[] for i in range(n+m)]
pr=[0]*m
for i in range(m):
a[i], b[i], k[i]=map(int, input().split())
a[i]-=1
b[i]-=1
g[c[b[i]]].append(i+n)
pr[i]=c[a[i]]
c[a[i]]=i+n
cr[i+n]=a[i]
st=[]
l=[0]*(n+m)
r=[0]*(n+m)
rev=[0]*(n+m)
t=0
for i in range(n):
st.append(i)
while len(st)!=0:
x=st.pop()
if len(st)==0:
if i<n-1:
r[x]=i+1
else:
r[x]=n+m
else:
r[x]=st[len(st)-1]
l[x]=t
rev[t]=x
t+=1
for y in g[x]:
st.append(y)
for i in range(n+m):
if r[i]<n+m:
r[i]=l[r[i]]
cnt=[0]*(n+m+1)
for i in range(n+m):
cnt[i+1]=cnt[i]
if c[cr[rev[i]]]==rev[i]:
cnt[i+1]+=1
for i in range(m):
l1=l[i+n]
r1=r[i+n]
l2=l[pr[i]]
ans=0
if l1<l2:
if k[i]<=cnt[l1] or k[i]>cnt[l2]:
ans=cr[rev[bisect.bisect_left(cnt, k[i])-1]]
elif k[i]<=cnt[l1]+cnt[l2]-cnt[r1]:
ans=cr[rev[bisect.bisect_left(cnt, k[i]-cnt[l1]+cnt[r1])-1]]
else:
ans=cr[rev[bisect.bisect_left(cnt, k[i]-cnt[l2]+cnt[r1])-1]]
else:
if k[i]<=cnt[l2] or k[i]>cnt[r1]:
ans=cr[rev[bisect.bisect_left(cnt, k[i])-1]]
elif k[i]<=cnt[l2]+cnt[r1]-cnt[l1]:
ans=cr[rev[bisect.bisect_left(cnt, k[i]-cnt[l2]+cnt[l1])-1]]
else:
ans=cr[rev[bisect.bisect_left(cnt, k[i]-cnt[r1]+cnt[l1])-1]]
print(ans+1)
chocorusk