아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

빈번한 값

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

요약
정렬된 배열에서 각 구간 질의마다 그 구간 안에서 가장 자주 등장하는 값이 몇 번 나타나는지 출력한다.
난이도

어려움10점 중 8점

유형
세그먼트 트리, 분할 정복, 배열
정답자
아직 제출이 없습니다

문제

nn개의 정수로 이루어진 수열 a1,a2,…,ana_1, a_2, \ldots, a_n이 비내림차순으로 정렬되어 주어진다. 또한 두 인덱스 ii와 jj (1≤i≤j≤n1 \le i \le j \le n)로 이루어진 질의가 여러 개 주어진다. 각 질의마다 부분 수열 ai,ai+1,…,aja_i, a_{i+1}, \ldots, a_j 안에서 가장 자주 등장하는 값이 몇 번 나타나는지 구하여라.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 두 정수 nn과 qq (1≤n,q≤1000001 \le n, q \le 100000)가 주어진다. 다음 줄에는 nn개의 정수 a1,…,ana_1, \ldots, a_n (−100000≤ai≤100000-100000 \le a_i \le 100000)이 공백으로 구분되어 주어진다. 모든 i∈{1,…,n−1}i \in \{1, \ldots, n-1\}에 대해 ai≤ai+1a_i \le a_{i+1}임이 보장된다. 이어지는 qq개의 줄에는 각각 하나의 질의가 주어지며, 질의의 경계 인덱스를 나타내는 두 정수 ii와 jj (1≤i≤j≤n1 \le i \le j \le n)로 이루어진다.

마지막 테스트 케이스 다음에는 정수 00 하나만 있는 줄이 주어진다.

출력

각 질의마다 주어진 구간에서 가장 자주 등장하는 값의 등장 횟수를 한 줄에 하나씩 정수로 출력한다.

예제2

  1. 예제 1

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

    입력
    1 1
    5
    1 1
    0
    
    예상 출력
    1