题目描述
需维护平面上的整点,所有点初始点权为 0,共 m 次操作,分为两类:
- 修改操作:给定 x,y,d,w,对满足 ∣X−x∣<d 且 ∣Y−y∣<d 的所有整点 (X,Y),将其点权增加 w⋅(d−max(∣X−x∣,∣Y−y∣));
- 查询操作:给定 x1,x2,y1,y2,计算满足 x1≤X≤x2 且 y1≤Y≤y2 的所有整点 (X,Y) 的点权之和,结果对 230 取模。
输入格式
从标准输入读入数据,格式如下:
- 第一行:一个整数 m(操作总次数);
- 接下来 m 行:每行表示一次操作:
- 若为修改操作,格式为
1 x y d w(1≤x,y,d,w≤108);
- 若为查询操作,格式为
2 x1 x2 y1 y2(1≤x1≤x2≤108,1≤y1≤y2≤108)。
输出格式
输出到标准输出,对每个查询操作,输出一行整数,表示该查询的结果(对 230 取模)。
样例
输入
5
1 3 4 5 1
2 1 4 3 5
1 2 4 2 2
2 4 5 3 5
1 4 4 4 8
输出
46
21
样例解释
- 第一次修改操作(x=3,y=4,d=5,w=1):对 X∈(−2,8)、Y∈(−1,9) 的整点,按规则增加权值;
- 第一次查询(X∈[1,4],Y∈[3,5]):计算该矩形内所有点的权值和,结果为 46;
- 第二次修改操作(x=2,y=4,d=2,w=2):对 X∈(0,4)、Y∈(2,6) 的整点,按规则增加权值;
- 第二次查询(X∈[4,5],Y∈[3,5]):计算该矩形内所有点的权值和,结果为 21;
- 第三次修改操作无后续查询,无需输出。
数据范围与提示
| 数据比例 |
约束条件 |
| 23% |
1≤m≤103 |
| 31% |
1≤m≤2×104 |
| 39% |
1≤m≤4×104 |
| 47% |
1≤m≤6×104 |
| 55% |
1≤m≤8×104 |
| 另外 15% |
所有查询操作均在修改操作之后(无在线修改与查询交替) |
| 另外 10% |
查询矩形的长和宽均 ≤5,且修改操作的 d≤5 |
| 所有修改操作的 d≤5 |
| 100% |
1≤m≤105,坐标与参数均 ≤108 |