만드는 중입니다

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

선거

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

요약
n개의 투표 기록과 m개의 구간 질의가 주어질 때, 각 구간 [l, r]에서 가장 많은 표를 받은 후보 번호를 구합니다.
난이도

보통10점 중 7점

유형
슬라이딩 윈도우, 정렬, 배열
정답자
아직 제출이 없습니다

문제

최근 나라에서 최신 기술을 사용한 선거가 치러졌다. 각 투표지마다 언제 투표함에 넣었는지와 그 투표지를 넣은 사람이 투표한 후보가 기록되어 있다. 개표가 끝나자 모두가 선거가 어떻게 진행되었는지 분석하고 싶어 했다. 그러려고 이 시스템을 도입한 것이 아니겠는가?

많은 사람이 알고 싶어 한 것은 다음과 같다. 주어진 시간 구간 동안 어느 후보가 가장 많은 표를 받았는가? 짧은 구간에서 특정 후보에게 표가 몰렸고 그 밖의 시간에는 적었다면, 그 구간에서 부정이 있었을 수 있다. 이런 질문에 답하려고 사이트가 만들어졌지만, 방문자가 예상보다 많아 사이트가 부하를 감당하지 못했다.

운영진은 사이트를 동시에 mm명의 사용자에게 서비스할 수 있도록 다시 작성하기로 했다. 여러분의 과제는 사용자가 묻는 질문, 즉 주어진 구간에서 어느 후보가 가장 많은 표를 받았는가에 답하는 프로그램을 작성하는 것이다.

입력

첫 번째 줄에 처리한 투표지의 개수 nn이 주어진다 (1≤n≤100,0001 \leq n \leq 100,000).

두 번째 줄에는 공백으로 구분된 nn개의 정수 aia_i가 주어진다 (1≤ai≤1091 \leq a_i \leq 10^9). aia_i는 투표지 번호 ii를 투표함에 넣은 사람이 투표한 후보의 번호이다.

세 번째 줄에는 질의의 개수 mm이 주어진다 (1≤m≤100,0001 \leq m \leq 100,000).

이어지는 mm개의 줄에는 각각 질의 lil_i rir_i가 주어진다 (1≤li≤ri≤n1 \leq l_i \leq r_i \leq n).

출력

각 질의마다 한 줄에 하나씩, 번호가 lil_i 이상 rir_i 이하인 투표지 중 가장 인기 있는 후보의 번호를 출력한다.

그 투표지들 중에서 다른 어느 후보도 더 많은 표를 받지 못했다면, 그 후보가 가장 인기 있는 후보이다. 동률도 허용된다.

힌트

샘플의 마지막 질의에서는 답으로 1도 인정된다. ололо, 부분 점수를 받는 풀이들.

예제1

  1. 예제 1

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