Poklon

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

요약
각 질의 구간에서 정확히 두 번 나타나는 서로 다른 값의 개수를 센다. N과 Q는 500,000까지다.
난이도

어려움10점 중 8점

유형
누적 합, 해시맵, 세그먼트 트리
정답자
아직 제출이 없습니다

문제

미르코는 아주 단순한 사람이다. 미르코의 친구 다르코가 자연수 NN개로 이루어진 배열을 주고, 이 배열에 관한 질문 QQ개를 던졌다. 미르코는 질문에 모두 답해야 한다.

각 질문은 두 정수로 이루어지며, 두 정수는 배열의 한 구간의 왼쪽 끝과 오른쪽 끝 위치이다. 질문의 답은 주어진 구간에 정확히 두 번 등장하는 서로 다른 값의 개수이다.

입력

첫째 줄에 정수 NN과 QQ가 주어진다. (1≤N,Q≤500 0001 \le N, Q \le 500\,000)

둘째 줄에 배열의 원소인 NN개의 자연수가 주어진다. 각 수는 1 000 000 0001\,000\,000\,000보다 작다.

다음 QQ개의 줄에는 각각 질문을 나타내는 두 정수 LL과 RR이 주어진다. (1≤L≤R≤N1 \le L \le R \le N)

출력

QQ개의 줄에 걸쳐, 입력으로 주어진 순서대로 각 질문의 답을 한 줄에 하나씩 출력한다.

힌트

첫 번째 예제에서 첫 번째 원소부터 세 번째 원소까지의 구간에 정확히 두 번 등장하는 수는 1 하나뿐이다.

예제3

  1. 예제 1

    입력
    5 1
    1 2 1 1 1
    1 3
    
    예상 출력
    1
    
  2. 예제 2

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

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