题目描述
译自 BalkanOI 2023 Day1 T3「Permutations」
给你一个由数字 1,2,…,n 组成的排列 p1,p2,…,pn。你需要回答 q 个查询。
第 i (1≤i≤q) 个查询由两个数字 Li,Ri (1≤Li≤Ri≤n) 表示。你需要回答满足以下条件的排列个数:
- 排列的长度为 n;
- 以序列 $p_{L_{i}}, p_{L_{i}+1}, \ldots, p_{R_{i}-1}, p_{R_{i}}$ 作为开头;
- 排列的最长递减子序列的长度至多为 2。
由于答案可能很大,输出它们对 109+7 取模的结果。
对于一个序列 a1,a2,…,ak,它的最长递减子序列的长度是最大的整数 t,使得存在 t 个下标 s1,s2,…,st,满足 1≤s1<s2<…<st≤k 且 as1>as2>…>ast。
输入格式
第一行包含一个整数 n。
第二行包含 n 个整数 p1,…,pn,即区间 [1,n] 中的 n 个不同的整数。
第三行包含一个整数 q。
接下来的 q 行每行描述了一个查询。第 i (1≤i≤q) 行包含两个整数字 Li 和 Ri。
输出格式
对于每个查询输出单独的一行,表示打印排列的个数对 109+7 取模的结果。
5
4 2 1 5 3
4
1 1
2 3
2 4
1 3
4
5
1
0
提示
样例解释
对于第一个查询,考虑到有四个序列 ⟨1,2,3,4,5⟩ 的排列以 4 开始,并且它们的最长递减子序列的长度至多为 2。这些排列是:
- ⟨4,1,2,3,5⟩;
- ⟨4,1,2,5,3⟩;
- ⟨4,1,5,2,3⟩;
- ⟨4,5,1,2,3⟩。
数据范围
对于所有输入数据,满足:
- 1≤n≤3⋅105
- 1≤q≤3⋅105
详细子任务附加限制及分值如下表所示。
子任务编号 |
附加限制 |
分值 |
1 |
n≤10,q≤10 |
6 |
2 |
n≤1000,q≤1000,每个查询的区间内都包含 pj=n |
7 |
3 |
每个查询的区间内都包含 pj=n |
9 |
4 |
n≤1000,q≤1000,pi=i (1≤i≤n),Lj=1 (1≤j≤q) |
12 |
5 |
pi=i (1≤i≤n),Lj=1 (1≤j≤q) |
18 |
6 |
n≤1000,q≤1000 |
12 |
7 |
无附加限制 |
36 |