結果
問題 |
No.1650 Moving Coins
|
ユーザー |
|
提出日時 | 2025-01-17 08:23:17 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 351 ms / 2,000 ms |
コード長 | 932 bytes |
コンパイル時間 | 209 ms |
コンパイル使用メモリ | 82,048 KB |
実行使用メモリ | 184,208 KB |
最終ジャッジ日時 | 2025-01-17 08:23:28 |
合計ジャッジ時間 | 11,530 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 24 |
ソースコード
from collections import deque N = int(input()) A = list(map(int,input().split())) B = list(map(int,input().split())) Pos = [0]*(2*N+1) for i in range(N): Pos[i+1] = A[i] Pos[N+i+1] = B[i] G = {i:[] for i in range(1,N+1)} Indeg = {i:0 for i in range(1,N+1)} for i in range(1,N+1): if Pos[i]<=Pos[N+i]: if i>1 and Pos[i]<=Pos[N+i-1]<=Pos[N+i]: G[i].append(i-1) Indeg[i-1] += 1 else: if i<N and Pos[N+i]<=Pos[N+i+1]<=Pos[i]: G[i].append(i+1) Indeg[i+1] += 1 ans = [] que = deque([]) for i in range(1,N+1): if Indeg[i]==0: que.append(i) while que: x = que.popleft() i = x+N if Pos[i]>=Pos[x]: for j in range(Pos[i]-Pos[x]): ans.append((x,"R")) else: for j in range(Pos[x]-Pos[i]): ans.append((x,"L")) if G[x]: que.append(G[x][0]) print(len(ans)) for i,d in ans: print(i,d)