#20274. 这就是前缀和

这就是前缀和

题目描述

现有一个整数nn,和一个初始点值均为 00 的无限长的数轴。

给定一个序列 p1,p2,p3,,pn{p_1},{p_2},{p_3},……,{p_n} ,表示有nn个数轴上的点。

再给出一个序列用于修改nn个点的值, ap1,ap2,ap3,,apn{a_{p_1}},{a_{p_2}},{a_{p_3}},……,{a_{p_n}} ,分别表示数轴上 pi{p_i} 点的值。

  • 定义 S(x)=i=xaiS(x)=\sum_{i=-\infty}^{x} {a_i}

随后给出 qq 个查询,每个查询:

  • 给出两个整数 l,rl,r ,求S(r)S(l)S(r)-S(l)的答案。

输入格式

输入一个整数T(1T105)T(1 \leq T \leq 10^5),表示测试样例组数。

对于每组测试样例:

第一行一个整数n(1n2×105)n(1 \leq n \leq 2\times 10^5 ),表示序列长度。

第二行nn个整数,p1,p2,p3,,pn{p_1},{p_2},{p_3},……,{p_n},表示有nn个数轴上的点,(pi109)( |{p_i}| \leq 10^9 )且各不相同。

第三行nn个整数,ap1,ap2,ap3,,apn{a_{p_1}},{a_{p_2}},{a_{p_3}},……,{a_{p_n}},分别表示数轴上 pi{p_i} 点的值,(api109)( |{a_{p_i}}| \leq 10^9 )

第四行一个整数q(1q2×105)q(1 \leq q \leq 2\times 10^5 ), 表示查询次数。

随后qq行,每行输入两个整数l,rl,r109l,r(|l|,|r| \leq 10^9)

多组数据范围保证,n,q2×105\sum n,\sum q \leq 2\times 10^5

输出格式

每组测试样例输出qq行。

每行输出一个对 109+710^9+7 取模的整数ansans,代表查询答案。

输入输出样例 #1

输入 #1

1
4
-10 0 10 20
-5 15 -3 10
4
-20 -10
-5 15
20 -20
-100 -50

输出 #1

1000000002
12
999999990
0