만드는 중입니다

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

Specijacija

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

요약
층마다 자식이 둘인 정점이 하나뿐인 트리에서 두 정점의 가장 큰 공통 조상을 온라인으로 구합니다.
난이도

어려움10점 중 8점

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

문제

양의 정수 nn과 양의 정수로 이루어진 수열 a1,a2,…,ana_1, a_2, \dots, a_n이 주어진다. 각 ii에 대해 i(i−1)2<ai≤i(i+1)2\frac{i(i-1)}{2} < a_i \le \frac{i(i+1)}{2}를 만족한다.

이 수열은 정점이 (n+1)(n+2)2\frac{(n+1)(n+2)}{2}개인 트리를 정한다. 트리는 n+1n+1개의 층으로 이루어지며, 층마다 정점이 1,2,…,n+11, 2, \dots, n+1개 있다.

a=(1,2,6)a = (1, 2, 6)으로 정해지는 트리다.

ii번째 층에는 번호가 i(i−1)2+1\frac{i(i-1)}{2} + 1부터 i(i+1)2\frac{i(i+1)}{2}까지인 정점이 있다. 정점 aia_i는 자식을 두 개 가지고, 같은 층의 나머지 정점은 자식을 하나씩 가진다.

qq개의 질의에 답해야 한다. 각 질의는 두 정점 xx와 yy의 가장 큰 공통 조상, 즉 두 정점의 조상이면서 번호가 가장 큰 정점을 구한다.

입력

첫 줄에 정수 nn, qq, tt가 주어진다 (1≤n,q≤200 0001 \le n, q \le 200\,000, t∈{0,1}t \in \{0, 1\}). 각각 매개변수의 개수, 질의의 개수, 질의 번호를 계산하는 데 쓰는 값이다.

둘째 줄에는 트리를 정하는 정수 nn개 aia_i가 주어진다 (i(i−1)2≤ai≤i(i+1)2\frac{i(i-1)}{2} \le a_i \le \frac{i(i+1)}{2}).

이어지는 qq개 줄에는 정수 x~i\tilde{x}_i와 y~i\tilde{y}_i가 주어진다 (1≤x~i,y~i≤(n+1)(n+2)21 \le \tilde{x}_i, \tilde{y}_i \le \frac{(n+1)(n+2)}{2}). 질의의 실제 정점은 다음과 같이 계산한다.

xi=((x~i−1+t⋅zi−1) mod (n+1)(n+2)2)+1x_i = \left(\left(\tilde{x}_i - 1 + t \cdot z_{i-1}\right) \bmod \frac{(n+1)(n+2)}{2}\right) + 1

yi=((y~i−1+t⋅zi−1) mod (n+1)(n+2)2)+1y_i = \left(\left(\tilde{y}_i - 1 + t \cdot z_{i-1}\right) \bmod \frac{(n+1)(n+2)}{2}\right) + 1

여기서 ziz_i는 ii번째 질의의 답이며, z0=0z_0 = 0이다. mod는 나눗셈의 나머지를 뜻한다.

t=0t = 0이면 xi=x~ix_i = \tilde{x}_i, yi=y~iy_i = \tilde{y}_i이므로 모든 질의를 입력만으로 알 수 있다. t=1t = 1이면 각 질의가 이전 질의의 답에 따라 정해지므로 미리 알 수 없다.

출력

qq개 줄을 출력한다. ii번째 줄에는 xix_i와 yiy_i의 가장 큰 공통 조상을 출력한다.

힌트

그림은 a=(1,2,6)a = (1, 2, 6)으로 정해지는 트리를 나타낸다.

예제2

  1. 예제 1

    입력
    3 5 0
    1 2 6
    7 10
    8 5
    6 2
    9 10
    2 3
    
    예상 출력
    1
    5
    1
    6
    1
    
  2. 예제 2

    입력
    3 5 1
    1 2 6
    7 10
    8 5
    6 2
    9 10
    2 3
    
    예상 출력
    1
    6
    2
    1
    1