#B1414. 区间众数种类查询

区间众数种类查询

【题目描述】

给定 nn 个正整数,其中第 ii 个元素记为 aia_i。

接下来进行 mm 次询问。

每次询问给定一个区间 [li,ri][l_i,r_i],你需要判断这个区间中有多少种众数。

在一个区间中,若某个数的出现次数等于该区间内所有数的最大出现次数,则这个数称为该区间的众数。

一个区间可能有多种众数。


【输入描述】

第一行输入两个整数 n,mn,m,表示元素个数和询问次数。

第二行输入 nn 个正整数 a1,a2,…,ana_1,a_2,\ldots,a_n。

接下来 mm 行,第 ii 行输入两个整数 li,ril_i,r_i,表示一次区间询问。

保证:

  • 1≤n,m≤30001\le n,m\le 3000;
  • 1≤ai≤1071\le a_i\le 10^7;
  • 1≤li≤ri≤n1\le l_i\le r_i\le n。

【输出描述】

对于每次询问,输出一行一个整数,表示区间 [li,ri][l_i,r_i] 中众数的种类数。


【样例 1】

【样例 1 输入】

8 5
1 2 2 3 3 3 2 4
1 3
1 5
4 8
7 8
1 8

【样例 1 输出】

1
2
1
2
2

【样例 1 解释】

第 22 次询问的区间为 [1,5][1,5],其中 22 和 33 都出现 22 次,都是众数,因此答案为 22。

第 55 次询问的整个序列中,22 和 33 都出现 33 次,因此答案也为 22。


【样例 2】

【样例 2 输入】

15 8
4 4 5 6 5 6 7 8 7 8 9 9 9 10 11
1 15
2 10
3 6
7 15
12 15
13 15
1 2
5 14

【样例 2 输出】

1
4
2
1
1
3
1
1

【数据规模与约定】

测试点编号 分数 特殊性质
1 ~ 2 20 1≤n,m≤1001\le n,m\le 100,1≤ai≤1001\le a_i\le 100
3 ~ 8 30 1≤n,m≤30001\le n,m\le 3000,1≤ai≤30001\le a_i\le 3000
9 ~ 10 50 1≤n,m≤30001\le n,m\le 3000,1≤ai≤1071\le a_i\le 10^7