구간과 서로 다른 수


답안 제출

Points: 19
시간 제한: 2.0s
메모리 제한: 256M

문제 유형
허용된 언어
C, C++, Python

문제

길이가 N인 정수 수열 A_1, A_2, ..., A_N이 주어진다. 이때 다음 형태의 쿼리 M개가 주어질 때, 각 쿼리의 답을 구하는 프로그램을 작성하시오.

  • i j: 구간 A_i, A_{i+1}, ..., A_j 중에서 중복을 제외하고 서로 다른 정수가 몇 종류 존재하는지 출력한다.

(단, 항상 입력되는 쿼리는 1 ≤ i ≤ j ≤ N을 만족한다.)

입력

첫째 줄에 수열의 크기 N과 쿼리의 개수 M이 공백을 사이에 두고 주어진다. 둘째 줄에는 수열을 이루는 N개의 정수가 공백을 사이에 두고 주어진다. 셋째 줄부터 M개의 줄에는 각 쿼리를 나타내는 두 정수 i, j가 주어진다.

(단, 1 ≤ N, M ≤ 100,000, 수열의 원소는 1 이상 1,000,000,000 이하의 자연수이다.)

출력

각 쿼리마다 정답을 한 줄에 하나씩 순서대로 출력한다.

예제 입력 1

5 3
1 2 1 3 2
1 5
2 4
3 5

예제 출력 1

3
3
3

예제 설명 1

  • 첫 번째 쿼리 [1, 5]: 구간 [1, 2, 1, 3, 2]에서 서로 다른 숫자는 1, 2, 3으로 총 3개이다.
  • 두 번째 쿼리 [2, 4]: 구간 [2, 1, 3]에서 서로 다른 숫자는 2, 1, 3으로 총 3개이다.
  • 세 번째 쿼리 [3, 5]: 구간 [1, 3, 2]에서 서로 다른 숫자는 1, 3, 2로 총 3개이다.

코멘트

현재 작성된 코멘트가 없습니다.