鲁珀特帝国机械齿轮
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

在崩坏:星穹铁道®中,鲁珀特帝国机械齿轮是模拟宇宙中的微妙奇物。

模拟宇宙由 n 个房间组成,编号为 1,2,3,\dots,n,攻略模拟宇宙时,需要按编号顺序从小到大进出每个房间,每个房间有 2 个属性值,第 i 个房间的属性值分别为 a_i,b_i
在模拟宇宙中,有一种货币叫做宇宙碎片。
Bezime 是差分机爱好者,因此全程(即进入第 1 个房间前,到第 n 个房间出来后)都会带着 1 个鲁珀特帝国机械齿轮。
鲁珀特帝国机械齿轮的具体效果如下(与原版不同):
  1. 进入第 i 个房间时,背包中的宇宙碎片增加 a_i(为负值就是数量减少)。
  2. 进入第 i 个房间后,如果背包中的宇宙碎片大于 b_i,那么宇宙碎片变为 b_i;否则,如果背包中的宇宙碎片小于 0,那么宇宙碎片变为 0;其他情况宇宙碎片不变。
Bezime 请你帮忙处理 3 种操作,共计 m 次操作:
  • Bezime 作为魔法师,可以修改房间的属性值,修改是永久的
  • 操作 1:将第 i 个房间的 a_i 值修改为 x
  • 操作 2:将第 i 个房间的 b_i 值修改为 y
  • Bezime 经常推算,开始时携带一些宇宙碎片,攻略模拟宇宙一段连续的房间后,宇宙碎片的数量。
  • 操作 3:初始宇宙碎片为 w,按顺序攻略模拟宇宙的 l\sim r 的房间(从第 l 个房间进入,直到第 r 个房间出来),回答 Bezime 背包中剩余的宇宙碎片数量 sum 为多少。

输入描述:

第一行两个正整数 n,m(1\le n,m\le 2\times 10^5)
第二行 n 个整数 a_1,a_2,\dots,a_n(-10^9\le a_i\le 10^9)
第三行 n 个整数 b_1,b_2,\dots,b_n(1\le b_i\le 10^9)
接下来 m 行。
每行开头一个正整数 op
如果 op=1,代表操作 1,紧接着两个整数 i,x(1\le i\le n,-10^9\le x\le 10^9)
如果 op=2,代表操作 2,紧接着两个正整数 i,y(1\le i\le n,1\le y\le 10^9)
如果 op=3,代表操作 3,紧接着三个正整数 l,r,w(1\le l \le r\le n,1\le w\le 10^9)

输出描述:

对于每个操作 3,一行输出一个整数 sum
示例1

输入

复制
3 2
-4 -5 -3
10 10 10
3 1 3 1
3 1 3 50

输出

复制
0
2
示例2

输入

复制
4 5
3 5 2 4
6 12 10 16
3 1 4 1
2 3 15
3 1 4 1
1 2 -10
3 1 4 1

输出

复制
14
15
6