黒ココアさんのメモ置き場

メモを置いたり置かなかったり

ABC335 C - Loong Tracking

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)])