아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

은나무

시간 제한2초메모리 제한512 MB

요약
K, H가 주어지는 실버 트리에서 두 키를 가진 파란 노드 사이의 경로 길이를 질의마다 구합니다. 키가 트리에 없으면 -1을 출력합니다.
난이도

어려움10점 중 8점

유형
트리, 수학, 재귀
정답자
아직 제출이 없습니다

문제

겨울 숲에 있는 은나무는 루트가 정해진 트리이며, 다음 성질에 따라 유일하게 정해진다.

  1. 모든 노드는 흰색 또는 파란색이고, 루트 노드는 흰색이다.
  2. 모든 흰색 노드는 파란색 자식 KK개와 흰색 자식 00개 또는 K+1K+1개를 가진다.
  3. 흰색 자식이 없는 모든 흰색 노드의 깊이는 HH로 같다. 흰색 노드의 깊이는 루트에서 해당 노드까지의 경로에 있는 흰색 노드의 개수이다.
  4. 모든 파란색 노드는 자식이 없고, 서로 다른 양의 정수인 키(key)를 가진다. 은나무의 파란색 노드 개수가 MM개라면, 파란색 노드들의 키 값은 11부터 MM까지이다.
  5. 모든 흰색 노드의 파란색 자식 노드들이 가지는 키는 오름차순이다. 흰색 자식이 있을 경우, 자식들을 흰색-파란색-흰색-파란색-⋯\cdots-흰색 순서로 번갈아 놓았을 때 흰색 자식의 서브트리에 있는 키들과 파란색 자식의 키들이 오름차순이 된다.

구체적으로, 흰색 자식들을 순서대로 c0,c1,⋯ ,cKc_0, c_1, \cdots, c_K라 하고, 파란색 자식이 가진 키 값을 순서대로 x1<x2<⋯<xKx_1 < x_2 < \cdots < x_K라 하자. cic_i를 루트로 하는 서브트리에 있는 모든 키는 xix_i보다 크고 xi+1x_{i+1}보다 작다. yiy_i를 흰색 자식 cic_i를 루트로 하는 서브트리에 있는 임의의 키라고 하면 y0<x1<y1<x2<⋯<xK<yKy_0 < x_1 < y_1 < x_2 < \cdots < x_K < y_K가 성립한다.

위의 그림은 K=2K = 2, H=3H = 3일 때 만들어지는 은나무이다.

두 키의 쌍이 주어졌을 때, 각 키를 담고 있는 두 파란색 노드를 연결하는 경로의 길이는 얼마인가?

입력

첫 줄에 정수 KK (1≤K≤501 \leq K \leq 50), HH (1≤H≤501 \leq H \leq 50), QQ (1≤Q≤200,0001 \leq Q \leq 200,000)이 주어진다. KK는 흰색 노드 하나가 갖는 파란색 자식의 개수, HH는 은나무의 높이, QQ는 쿼리의 개수이다. 이 때, 트리에 존재하는 키의 개수는 101810^{18}을 넘지 않는다.

다음 QQ개의 줄에 각 줄마다 두 정수 AA, BB (1≤A≤B≤10181 \leq A \leq B \leq 10^{18})가 주어진다.

출력

각각의 쿼리에 대해, 두 정수를 담고 있는 두 파란색 노드를 연결하는 경로의 길이를 출력한다. 해당하는 파란색 노드가 은나무 내에 존재하지 않으면 −1-1을 출력한다.

예제2

  1. 예제 1

    입력
    2 3 9
    1 2
    1 3
    3 6
    3 12
    5 9
    8 10
    9 10
    19 24
    20 30
    
    예상 출력
    2
    3
    2
    4
    4
    6
    4
    3
    -1
    
  2. 예제 2

    입력
    2 2 5
    1 1
    1 3
    2 7
    4 5
    6 9
    
    예상 출력
    0
    3
    4
    2
    -1