#Lutece2149. 线段树教做人

线段树教做人

Migrated from Lutece 2149 线段树教做人

All parts of this problem, including description, images, samples, data and checker, might be broken. If you find bugs in this problem, please contact the admins.

Description

这是一道实打实的硬核数据结构,就不BB了,看要求,懂题意

给一个长度为nn的数组aa和一个长度为n1n-1的数组bb,你需要完成以下两种操作。

1.1.a[i]a[i]增大到a[i]+xa[i]+x.如果a[i+1]<a[i]+b[i]a[i+1]<a[i]+b[i],那么a[i+1]=a[i]+b[i]a[i+1] = a[i] + b[i],然后如果a[i+2]<a[i+1]+b[i+1]a[i+2]<a[i+1]+b[i+1],那么a[i+2]=a[i+1]+b[i+1]a[i+2] = a[i+1] + b[i+1]a[i+3],a[i+4]....a[n]a[i+3],a[i+4]....a[n]以此推类。

2.2.询问aa数组中区间[l,r][l,r]的区间和。

我们保证一开始a[i]+b[i]a[i+1]a[i]+b[i] \leq a[i+1]

Input

第一行一个nn,表示aa数组的长度。

第二行nn个数分别为a1,a2,a3...ana1,a2,a3...an,表示aa数组的元素大小。

第三行n1n-1个数分别为b1,b2,b3...b1,b2,b3...,表示bb数组的元素大小。

第四行一个qq,表示操作数量。

接下来qq行:

1.1.格式为11 pp xx表示将a[i]a[i]增大xx.

2.2.格式为22 ll rr表示询问aa数组[l,r][l,r]的区间和。

Output

对于每个2操作,输出区间和。

Samples

3
1 2 3
1 -1
5
2 2 3
1 1 2
2 1 2
1 3 1
2 2 3
5
7
8

Constraints

2n1e52 \leq n \leq 1e5

1e9ai1e9-1e9 \leq ai \leq 1e9

1e6bi1e6-1e6 \leq bi \leq 1e6

1q1e51 \leq q \leq 1e5

对于第一类操作:1pn,0x1e61 \leq p \leq n, 0 \leq x \leq 1e6

对于第二类操作:1lrn1 \leq l \leq r \leq n

Resources

2019 UESTC ACM Training for Data Structures