#P11573. [COTS 2015] 关灯泡 / Žarulje

    ID: 12824 远端评测题 1000ms 500MiB 尝试: 0 已通过: 0 显示难度暂无评定 上传者: 标签>2015COCI(克罗地亚)

[COTS 2015] 关灯泡 / Žarulje

背景

译自 Izborne Pripreme 2015 (Croatian IOI/CEOI Team Selection) D1T2。1s,0.5G\texttt{1s,0.5G}。

题目描述

有 nn 盏灯泡排成一排,从左到右编号 1∼n1\sim n。第 ii 盏灯泡发光的功率为 aia_i 瓦。

现在想要将所有灯泡全部关闭。考虑如下的贪心算法:

  • 选择起始位置 pp。关闭灯泡 pp。
  • 令当前位置为 xx。若还有灯泡未关闭,循环执行以下流程:
    • 若只有 xx 左边有未关闭的灯泡,则关闭 xx 左边离 xx 最近的灯泡 ll,并令 x←lx\gets l。
    • 若只有 xx 右边有未关闭的灯泡,则关闭 xx 右边离 xx 最近的灯泡 rr,并令 x←rx\gets r。
    • 否则,xx 左边离 xx 最近的灯泡为 ll,令 xx 右边离 xx 最近的灯泡为 rr。
      • 如果两盏灯泡功率相等,则随机选择一盏灯泡 yy。关闭 yy,并令 x←yx\gets y。
      • 否则,令功率更大的灯泡为 yy。关闭 yy,并令 x←yx\gets y。

定义 f(p)f(p) 为起始位置为 pp 时,上述贪心算法产生的不同关灯泡序列有多少个。

给定 mm 个位置 x1,x2,⋯ ,xmx_1,x_2,\cdots,x_m。对于 i=1,2,⋯ ,mi=1,2,\cdots,m,求出 f(xi)f(x_i) 对 (109+7)(10^9+7) 取模后的结果。

输入格式

第一行,两个正整数 n,mn,m。

第二行,nn 个正整数 a1,a2,⋯ ,ana_1,a_2,\cdots,a_n。

第三行,mm 个正整数 x1,x2,⋯ ,xmx_1,x_2,\cdots,x_m。

输出格式

输出 mm 行。每行一个整数,表示答案对 (109+7)(10^9+7) 取模后的结果。

5 2
3 5 1 4 3
3 5
2
1
7 7
7 7 7 7 7 7 7
7 6 5 4 3 2 1
1
6
15
20
15
6
1

提示

样例解释

样例 11 解释:起始位置为 33 时,[3,2,4,1,5][3,2,4,1,5] 和 [3,2,4,5,1][3,2,4,5,1] 是可能的两种关灯泡顺序。

数据范围

对于 100%100\% 的数据,保证:

  • 1≤xi≤n≤2×1051\le x_i\le n\le 2\times 10^5;
  • 1≤ai,m≤2×1051\le a_i,m\le 2\times 10^5。
子任务编号 n≤n\le m≤m\le 得分
1 1 2×103 2\times 10^3 2×1032\times 10^3 22 22
2 2 2×105 2\times 10^5 5 5 38 38
3 3 2×105 2\times 10^5 40 40