【题目背景】
CodeDay 在调试一则象形魔法时,意外变成了小象。恢复魔法需要借助象群留在回声长廊中的共鸣,他只好循着长廊逐段聆听,并将每次听见的结果写入《象群回响簿》。
【题目描述】
回声长廊中依次排列着 n 块鸣石,第 i 块鸣石上刻着一个正整数 ai。CodeDay 每次会聆听一段连续的鸣石,其中包含两端。对于一个正整数 x,若这段长廊中恰好有 x 块鸣石刻着数字 x,便称 x 是这段长廊的一个回响数字。同一个数字只会作为一个回响数字被记录一次。
为了让恢复魔法所需的共鸣保持稳定,CodeDay 需要完成 m 次聆听。第 j 次聆听从第 lj 块鸣石开始,到第 rj 块鸣石结束。请你依次求出其中不同回响数字的数量。
【输入格式】
从文件 freq.in 中读入数据。
本题包含多组测试数据。
输入的第一行包含两个非负整数 c,T,分别表示测试点编号与测试数据的组数。c=0 表示该测试点为样例。
对于每组测试数据:
第一行包含两个整数 n,m,分别表示鸣石数量与聆听次数。
第二行包含 n 个正整数 a1,a2,⋯,an,其中 ai 表示第 i 块鸣石上刻着的数字。
接下来 m 行,第 j 行包含两个整数 lj,rj,表示第 j 次聆听的起点与终点。
【输出格式】
输出到文件 freq.out 中。
对于每组测试数据,输出 m 行,每行一个整数,依次表示每次聆听经过的长廊中回响数字的数量。
【样例 1 输入】
10 127 233 1 2 2 3 3 741 753 4
【样例 1 输出】
【说明/提示】
【样例 1 解释】
第一次聆听经过全部 7 块鸣石,其中数字 1,2,3 分别出现 1,2,3 次,因此共有 3 个回响数字。第二次聆听只经过第 3,4 块鸣石,只有数字 2 恰好出现 2 次,因此答案为 1。
【样例 2】
见选手目录下的 freq/freq2.in 和 freq/freq2.ans。
该组样例符合测试点 1∼4 的数据范围。
【样例 3】
见选手目录下的 freq/freq3.in 和 freq/freq3.ans。
该组样例符合测试点 5∼8 的数据范围。
【样例 4】
见选手目录下的 freq/freq4.in 和 freq/freq4.ans。
该组样例符合测试点 9∼12 的数据范围。
【样例 5】
见选手目录下的 freq/freq5.in 和 freq/freq5.ans。
该组样例符合测试点 13∼20 的数据范围。
【数据范围】
对于 100% 的数据,保证 1≤T≤100,1≤n,m≤105,1≤ai≤109,1≤lj≤rj≤n。对于同一个测试点,保证 ∑n≤105,∑m≤105。
特殊性质 A:对于每组测试数据,均有 ai≤20。
特殊性质 B:对于每个询问,均有 rj−lj+1≤100。