서로 다른 수와 쿼리 2

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

요약
각 질의의 왼쪽 끝이 직전 답에 따라 정해지는 상황에서, 구간 [l, r]에 나타나는 서로 다른 값의 개수를 최대 10^6개의 질의에 대해 센다.
난이도

보통10점 중 7점

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

문제

정수 NN개로 이루어진 배열 AA가 주어진다. 배열의 첫 번째 원소가 1번이다.

다음 쿼리를 QQ번 처리하는 프로그램을 작성하시오.

  • l r: AA의 ll번째 수부터 rr번째 수까지에서 서로 다른 수가 몇 개인지 세어 출력한다.

각 쿼리의 ll은 직전 쿼리의 정답으로 정해지므로, 쿼리를 주어진 순서대로 하나씩 처리해야 한다.

입력

첫째 줄에 배열의 크기 NN (1≤N≤1061 \le N \le 10^6)이 주어진다.

둘째 줄에 A1,A2,…,ANA_1, A_2, \dots, A_N이 공백으로 구분되어 주어진다. 각 수는 10910^9 이하의 자연수이다.

셋째 줄에 쿼리의 개수 QQ (1≤Q≤1061 \le Q \le 10^6)가 주어진다.

넷째 줄부터 QQ개의 줄에 ii번 쿼리를 나타내는 두 정수 xix_i와 rir_i가 주어진다. 쿼리 번호는 1번부터 시작하고, ii번 쿼리의 왼쪽 끝은 li=xi+Qi−1l_i = x_i + Q_{i-1}이다. 여기서 Qi−1Q_{i-1}은 i−1i-1번 쿼리의 정답이고 Q0=0Q_0 = 0이다.

모든 ii에 대해 1≤li≤ri≤N1 \le l_i \le r_i \le N이고 −(N−1)≤xi≤N−1-(N-1) \le x_i \le N-1이다.

출력

QQ개의 줄에 각 쿼리의 정답을 입력에 주어진 순서대로 한 줄에 하나씩 출력한다.

예제7

  1. 예제 1

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

    입력
    2
    5 5
    3
    1 1
    0 2
    1 2
    
    예상 출력
    1
    1
    1
    
  3. 예제 3

    입력
    8
    7 7 7 7 7 7 7 7
    6
    1 3
    0 8
    3 4
    1 7
    7 8
    0 2
    
    예상 출력
    1
    1
    1
    1
    1
    1
    
  4. 예제 4

    입력
    8
    1 1000000000 999999999 2 500000000 3 999999998 4
    6
    1 8
    -6 5
    -3 1
    4 8
    -1 3
    0 6
    
    예상 출력
    8
    4
    1
    4
    1
    6
    
  5. 예제 5

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

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

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