서로 다른 최대 구간 쿼리

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

요약
각 질의 [l,r]마다 그 안에서 원소가 모두 서로 다른 가장 긴 부분 구간의 길이를 구한다.
난이도

어려움10점 중 8점

유형
세그먼트 트리, 슬라이딩 윈도우, 누적 합, 이분 탐색
정답자
아직 제출이 없습니다

문제

길이 NN의 수열 A_1,A_2,...A_NA\_1, A\_2, ... A\_N가 입력된다. 다음 쿼리를 수행하자.

  • ll rr : l≤s≤e≤rl ≤ s ≤ e ≤ r을 만족하는 서로 다른 수만 있는 구간 \[s,e]\[s,e] 중 최대 크기를 출력한다. 구간 \[s,e]\[s,e]의 크기는 e−s+1e-s+1이다.

서로 다른 수만 있는 구간 \[s,e]\[s,e]에는 A_i=A_jA\_i = A\_j인 ii와 jj가 있어선 안 된다. (s≤i\<j≤e)(s≤i\<j≤e)

입력

첫째 줄에 NN이 입력된다. (1≤N≤500,000)(1≤N≤500\\,000)

둘째 줄에 정수 수열 A_1,A_2,...A_NA\_1, A\_2, ... A\_N이 공백으로 구분되어 입력된다. (1≤A_i≤N)(1≤A\_i≤N)

셋째 줄에 QQ가 입력된다. (1≤Q≤500,000)(1≤Q≤500\\,000)

넷째 줄부터 Q+3Q+3번째 줄까지 쿼리가 한 줄에 하나씩 입력된다. (1≤l≤r≤N)(1≤l≤r≤N)

출력

쿼리가 주어질 때마다 쿼리의 답을 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    7
    3 1 3 2 2 2 2
    3
    2 3
    1 5
    1 3
    
    예상 출력
    2
    3
    2