만드는 중입니다

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

수열과 쿼리 40

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

요약
수열 A와 법 M이 주어질 때, 각 질의마다 모든 값에 d를 더해 M으로 나눈 나머지를 구하고, 사전순으로 k번째인 접미사의 시작 위치를 출력합니다.
난이도

어려움10점 중 8점

유형
문자열, 정렬, 이분 탐색
정답자
아직 제출이 없습니다

문제

길이가 NN인 수열 A1,A2,…,ANA_1, A_2, \ldots, A_N과 정수 MM이 주어진다. 각 쿼리는 정수 dd와 kk로 이루어지며, 다음 과정을 순서대로 수행한다.

  • 새로운 수열 Bi=(Ai+d) mod MB_i = (A_i + d) \bmod M을 만든다 (1≤i≤N1 \le i \le N).
  • 모든 ii (1≤i≤N1 \le i \le N)에 대해 ii번째 접미사를 Bi,Bi+1,…,BNB_i, B_{i+1}, \ldots, B_N으로 정의한다.
  • 사전 순으로 kk번째로 작은 수열 BB의 접미사 번호를 출력한다.

입력

첫째 줄에 수열의 크기 NN과 정수 MM이 주어진다.

둘째 줄에 A1,A2,…,ANA_1, A_2, \ldots, A_N이 주어진다.

셋째 줄에 쿼리의 개수 QQ가 주어진다.

넷째 줄부터 QQ개의 줄에 쿼리 dd와 kk가 한 줄에 하나씩 주어진다.

출력

각 쿼리를 수행하면서 사전 순으로 kk번째로 작은 수열 BB의 접미사 번호를 한 줄에 하나씩 출력한다.

제한

  • 1≤N≤1051 \le N \le 10^5
  • 1≤M≤1091 \le M \le 10^9
  • 0≤Ai<M0 \le A_i < M
  • 1≤Q≤5⋅1051 \le Q \le 5 \cdot 10^5
  • 0≤d≤1090 \le d \le 10^9
  • 1≤k≤N1 \le k \le N

힌트

첫 번째 쿼리에서 수열은 B=[5,2,0,5,5]B = [5, 2, 0, 5, 5]이다. 모든 접미사를 사전 순으로 정렬하면 [0,5,5][0, 5, 5], [2,0,5,5][2, 0, 5, 5], [5][5], [5,2,0,5,5][5, 2, 0, 5, 5], [5,5][5, 5] 순서가 된다. 사전 순으로 4번째인 접미사의 번호는 1이다.

예제1

  1. 예제 1

    입력
    5 6
    1 4 2 1 1
    3
    4 4
    2 3
    1 1
    
    예상 출력
    1
    1
    5