题号:NC274867
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
假定有一个长度为

序列

。
序列

的前缀和定义为

,

,特别的,定义

。
序列

的前缀和前缀最大值为

,

。
序列

的

类价值为

中不同的元素数量。
序列

的

类价值为所有

的
所有排列中

类价值的种类数。
现在有一个长度为

的序列

。
给出

个询问,每个询问包含两个整数

,求序列
![b[l::r]](https://www.nowcoder.com/equation?tex=b%5Bl%3A%3Ar%5D)
的

类价值。
![b[l::r]](https://www.nowcoder.com/equation?tex=b%5Bl%3A%3Ar%5D)
表示
![b[l],b[l+1],...,b[r]](https://www.nowcoder.com/equation?tex=b%5Bl%5D%2Cb%5Bl%2B1%5D%2C...%2Cb%5Br%5D)
。
输入描述:
第一行输入一个整数
,表示序列
的长度。
第二行输入
个整数
。
接着输入一个整数
,表示询问次数。
然后
行,每行两个整数
。
输出描述:
对于每一个询问,输出一个正整数,表示答案。
示例2
输入
复制
10
1 2 5 -5 6 3 -1 6 3 -1
10
1 5
1 3
2 5
3 6
1 10
2 6
6 8
1 7
1 1
2 3