对称旅行者
题目信息
时间限制: 1s
空间限制: 256M
输入文件: travel.in
输出文件: travel.out
题目描述
在数轴上生活着 n 位旅行者,编号为 1,2,…,n,第 i 位旅行者当前的位置为 xi。
当第 i 位旅行者想进行一次对称旅行时,他需要从旅行者 i−1 和 i+1 中选一个(设为 j),然后从现在的位置旅行到 xj 的对称点上。
旅行者们的一轮旅行包含 m 次对称旅行,其中第 i 次对称旅行由旅行者 ai 进行。
旅行者们期望发起 K 轮旅行(每轮旅行结束后旅行者不归位),那么对于每位旅行者,所有 2mK 种可能的旅行方案中最终位置之和是多少?答案对 109+7 取模。
输入格式
- 第一行一个整数 n
- 第二行 n 个整数 x1,x2,⋯,xn,分别代表每枚旅行者初始时的位置
- 第三行两个整数 m,K
- 第四行 m 个整数 a1,a2,⋯,am,分别代表一轮旅行中第 i 次发起对称旅行的旅行者
输出格式
一行 n 个整数,代表每位旅行者的答案
样例
样例输入 1
样例输出 1
样例解释 1
共 2 种跳法,旅行者 1 3 都不动,旅行者 2 可能到达 2 或 4
样例输入 2
样例输出 2
样例解释 2
共 16 种跳法,旅行者 1 3 都不动,旅行者 2 的最终位置永远是 1
样例输入 3
文本
5
0 1 3 6 10
3 5
2 3 4
样例输出 3
文本
0 65536 163840 294912 327680
数据范围与提示
- 对于 100% 的数据,1≤n,m≤105,1≤K≤1018,2≤ai≤n−1,0≤xi≤109
- 对于 10% 的数据,n≤105,m≤20,K=1
- 对于 30% 的数据,n≤105,m≤2000,K≤2000
- 另有 20% 的数据,n≤100,m≤105,K≤1018