만드는 중입니다

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

잘못 구현한 큐

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

요약
pop할 때마다 현재 큐의 A_1부터 A_N번째 원소를 동시에 지웁니다. D번 pop한 뒤 질의마다 x번째 값을 구합니다.
난이도

어려움10점 중 8점

유형
배열, 이분 탐색, 수학
정답자
아직 제출이 없습니다

문제

큐는 다음 두 연산을 할 수 있는 선형 자료구조이다.

  1. 뒤에 원소를 삽입한다 (push).
  2. 앞에서 원소를 삭제한다 (pop).

그런데 pop 함수를 잘못 구현했다. pop 질의마다 맨 앞의 원소 하나만 지우는 것이 아니라, 서로 다른 위치에 있는 NN개의 원소를 동시에 삭제한다.

구체적으로, pop 함수가 원소를 삭제하는 위치는 NN개이며 A1,A2,…,ANA_1, A_2, \ldots, A_N으로 표시한다. 큐의 인덱스는 맨 앞부터 1에서 시작한다. 삭제한 뒤에는 위와 같은 규칙으로 인덱스를 다시 매긴다.

이렇게 잘못 구현된 큐를 DD번 pop한 뒤의 모습을 알아보려 한다. 실험을 위해 먼저 1부터 시작하는 정수를 무한히 push한다. 초기 큐는 "1 2 3 4 5 6 7 8..."이다. 이후 push 없이 큐를 DD번 pop한다.

예를 들어 큐가 "1 2 3 4 5 6 7 8..."일 때 2번째와 5번째 원소를 삭제하면 큐는 "1 3 4 6 7 8 9 10..."이 된다. 한 번 더 삭제하면 "1 4 6 8 9 10 11 12..."가 되며, 이런 식으로 계속된다.

QQ개의 질의를 처리한다. 각 질의는 정수 xx 하나로 이루어진다. 각 질의마다 DD번 pop한 뒤 큐의 xx번째 인덱스에 있는 수를 구한다.

입력

첫 번째 줄에 NN이 주어진다.

두 번째 줄에는 각 pop 연산에서 삭제할 인덱스 A1,A2,…,ANA_1, A_2, \ldots, A_N이 공백으로 구분되어 주어진다.

세 번째 줄에는 질의의 개수 QQ와 pop 연산의 횟수 DD가 공백으로 구분되어 주어진다.

이어지는 QQ개의 줄에는 각각 질의 정수 xx가 하나씩 주어진다.

출력

QQ개의 줄을 출력한다. ii번째 줄에는 ii번째 질의의 답을 정수 하나로 출력한다.

제한

  • 1≤N≤500 0001 \leq N \leq 500\,000
  • 1≤Ai≤10121 \leq A_i \leq 10^{12}
  • 모든 AiA_i는 서로 다르다.
  • 1≤Q≤500 0001 \leq Q \leq 500\,000
  • 1≤D≤10121 \leq D \leq 10^{12}
  • 모든 질의에 대해 1≤x≤10121 \leq x \leq 10^{12}이다.

예제2

  1. 예제 1

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

    입력
    3
    7 1 32
    8 5
    2
    8
    7
    17
    26
    19
    3
    1
    
    예상 출력
    8
    18
    17
    27
    39
    29
    10
    6