만드는 중입니다

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

최빈값과 쿼리

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

요약
구간 [l, r] 안에서 어떤 값이 K번 이상 나오는 가장 짧은 연속 부분 수열의 길이를 각 질의마다 구합니다.
난이도

보통10점 중 6점

유형
정렬, 배열, 해시맵
정답자
아직 제출이 없습니다

문제

크기가 NN인 정수 수열 AA와 상수 KK가 주어진다. 다음과 같은 쿼리 QQ개가 주어질 때, 각 쿼리에 대한 답을 출력하라.

  • ll rr: AA의 ll번째 원소부터 rr번째 원소까지만 포함하는 연속 부분 수열 중, 같은 수가 KK번 이상 등장하는 것의 최소 길이를 출력한다. 그런 부분 수열이 존재하지 않으면 −1-1을 출력한다.

입력

첫 번째 줄에 NN, KK, QQ가 순서대로 주어진다. (1≤N,K,Q≤200 0001 \le N, K, Q \le 200\,000)

두 번째 줄에 수열 AA의 원소 NN개가 순서대로 주어진다. (1≤Ai≤N1 \le A_i \le N)

세 번째 줄부터 QQ개의 줄에 걸쳐 각 줄마다 ll, rr이 주어진다. (1≤l≤r≤N1 \le l \le r \le N)

출력

QQ개의 줄에 걸쳐 각 줄마다 쿼리에 대한 답을 순서대로 출력한다.

힌트

BB가 AA의 연속 부분 수열이라는 것은, 1≤M≤N1 \le M \le N인 정수 MM과 1≤i+M<N1 \le i+M < N인 정수 ii가 존재하여, 1≤j≤M1 \le j \le M인 모든 정수 jj에 대해 BB의 jj번째 원소가 AA의 i+j−1i+j-1번째 원소와 같다는 뜻이다.

예제1

  1. 예제 1

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