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

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

민호의 소원

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

요약
배열에 Q개의 구간 질의가 주어질 때, 각 구간에서 세 번 이상 등장하는 서로 다른 값의 개수를 구한다.
난이도

어려움10점 중 8점

유형
세그먼트 트리, 누적 합, 정렬, 구현
정답자
아직 제출이 없습니다

문제

민호가 길이 NN의 수열 A1,A2,…,ANA_1, A_2, \dots, A_N을 하나 가지고 있다. 민호는 두 정수 xx, yy를 말하면서 구간 [x,y][x, y]에 세 번 이상 등장하는 수가 몇 종류인지 물어본다.

등장 횟수의 합이 아니라 세 번 이상 등장하는 수의 종류 개수를 답해야 한다. 예를 들어 구간에 놓인 수가 1,3,3,3,3,2,2,2,7,1,71, 3, 3, 3, 3, 2, 2, 2, 7, 1, 7이면 33이 네 번, 22가 세 번 등장하므로 답은 22다.

민호의 소원 QQ개에 모두 답하자.

입력

첫째 줄에 NN과 QQ가 공백으로 구분되어 주어진다 (1≤N,Q≤100 0001 \le N, Q \le 100\,000). 각각 민호가 가진 수열의 길이와 민호가 말할 소원의 개수다.

둘째 줄에 수열의 원소 AiA_i가 순서대로 공백으로 구분되어 주어진다 (1≤Ai≤100 0001 \le A_i \le 100\,000, 1≤i≤N1 \le i \le N).

셋째 줄부터 QQ개의 줄에 각 소원의 xx와 yy가 공백으로 구분되어 주어진다 (1≤x≤y≤N1 \le x \le y \le N).

출력

QQ개의 줄에 각 소원의 답을 입력에 주어진 순서대로 출력한다.

예제2

  1. 예제 1

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

    입력
    11 3
    1 3 3 3 3 2 2 2 7 1 7
    1 11
    2 8
    4 9
    
    예상 출력
    2
    2
    1