結果

問題 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)
0