만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

트리

면접 대비

시간 제한1초메모리 제한1024 MB

요약
무한 이진 트리에서 왼쪽과 오른쪽 자식으로 내려갈 때마다 색이 1씩 바뀌는 규칙으로 부분트리를 칠하고, 루트 경로로 주어진 정점의 현재 색을 구하는 문제입니다.
난이도

보통10점 중 6점

유형
트라이, 트리, 문자열, 구현
정답자
아직 제출이 없습니다

문제

무한 이진 트리가 주어진다. 트리에는 루트가 있고, 무한히 많은 정점이 있다. 각 정점에는 왼쪽 자식과 오른쪽 자식이 있으며, 루트를 제외한 모든 정점에는 부모가 하나 있다.

각 정점은 cc개의 색 중 하나로 칠해지거나, 색이 없는 상태일 수 있다. 처음에는 모든 정점이 색이 없다.

두 종류의 쿼리를 처리해야 한다.

  1. color(uu, xx): 정점 uu를 색 xx로 칠한 뒤, 왼쪽 자식 LL에 대해 color(LL, (x+1) mod c(x + 1) \bmod c)를, 오른쪽 자식 RR에 대해 color(RR, (x−1+c) mod c(x - 1 + c) \bmod c)를 호출한다. 이 연산은 정점 uu의 부분 트리 전체(무한히 많은 정점)를 다시 칠한다. 여기서  mod \bmod는 나머지 연산이다. 이미 칠해진 정점이라도 색은 새 색으로 바뀐다.
  2. 정점이 주어지면 그 정점의 현재 색을 출력한다.

입력

첫 줄에 쿼리 개수 qq와 색의 개수 cc가 주어진다 (1≤q≤5⋅1051 \leq q \leq 5 \cdot 10^5, 1≤c≤1091 \leq c \leq 10^9). 이어서 qq개의 쿼리가 주어지며, 각 쿼리는 정수 tit_i로 시작한다.

ti=1t_i = 1이면 다음 줄에 칠할 색 xx (0≤x≤c−10 \leq x \leq c - 1)가 주어진다. 그 다음 줄에는 루트에서 정점 uu까지의 경로를 나타내는 빈 문자열이 아닌 문자열 sis_i가 주어진다. 'L'은 왼쪽 자식으로, 'R'은 오른쪽 자식으로 이동함을 뜻한다.

ti=2t_i = 2이면 다음 줄에 같은 형식의 경로 문자열 sis_i가 주어지며, 이 경로가 가리키는 정점의 색을 출력해야 한다.

모든 쿼리의 경로 길이 합은 5⋅1055 \cdot 10^5을 넘지 않는다.

출력

두 번째 종류의 쿼리마다 해당 정점의 색을 한 줄에 하나씩 출력한다. 정점에 색이 없으면 −1-1을 출력한다.

예제1

  1. 예제 1

    입력
    6 3
    1 2
    L
    2
    LL
    1 0
    LL
    2
    LLR
    2
    LR
    2
    R
    
    예상 출력
    0
    2
    1
    -1