結果

問題 No.3086 Re One Two
ユーザー Facade
提出日時 2025-04-04 22:19:28
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 614 ms / 2,000 ms
コード長 917 bytes
コンパイル時間 292 ms
コンパイル使用メモリ 82,388 KB
実行使用メモリ 275,564 KB
最終ジャッジ日時 2025-04-04 22:19:56
合計ジャッジ時間 13,408 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 32
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

import sys
sys.setrecursionlimit(10**8)
from bisect import *
n=int(input())
to=[-1]*n
prev=[-1]*n
query=[list(map(int,input().split())) for _ in range(n)]
one=[]
two=[]
for i in range(n):
if query[i][1]==1:
one.append(i)
elif query[i][1]==2:
two.append(i)
for i in range(len(one)):
pl=bisect_left(two,one[i])
pl-=1
to[one[i]]=two[pl]
prev[two[pl]]=one[i]
# for i,j in zip(one,two):
# to[i]=j
# prev[j]=i
for i in range(n):
if query[i][0]==1:
to[i+1]=i
prev[i]=i+1
# order=[]
# for i in range(n):
# if prev[i]==-1:
# order.append(i)
# for i in range(len(order)-1):
# to[order[i]]=order[i+1]
# prev[order[i+1]]=order[i]
ans=[]
def DFS(now):
global ans
ans.append(now)
if to[now]!=-1:
DFS(to[now])
for i in range(n):
if query[i][0]!=1 and query[i][1]!=2:
DFS(i)
for i in range(n):
print(ans[i]+1)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0