atcoder.jp
問題
- 座標平面上で蛇のおもちゃを動かすから、どのパーツがどこにあるか教えてね
成約
- $ 2 \leq N \leq 10^6 $
- $ 1 \leq Q \leq 2 \times 10^5 $
思考
- クエリ毎に、愚直にシミュレーション
- dequeは添字アクセス遅いから、配列で誤魔化そうね
- 配列をリバースして後ろに新しい頭の位置を足すのが簡単っぽい
- Pythonでランダムアクセスが速いdequeがタイムラインに転がってた?ようなので?そのうち確認しても良いかもしれない
コード
N,Q = map(int,input().split())
L = []
for i in range(N,0,-1):
L.append((i,0))
for _ in range(Q):
type,query = input().split()
if type == '1':
prev_x = L[-1][0]
prev_y = L[-1][1]
if query == "R":
L.append((prev_x+1,prev_y))
elif query == "L":
L.append((prev_x-1,prev_y))
elif query == "U":
L.append((prev_x,prev_y+1))
else:
L.append((prev_x,prev_y-1))
else:
print(*L[-int(query)])