#P0432. Mobile Phone 移动电话

Mobile Phone 移动电话

题目描述

假设坦佩雷地区的第四代移动电话基站工作如下:该地区被划分为若干个小方格,所有的这些方格组成一个 SSS * S 的矩阵,行和列的编号从 00S1S-1。每个方格里都包含一个基站。一个方格内活跃的手机数量会因为手机被从一个方格移动到另一个方格,或者手机被开机或关机而发生变化。基站会周期性地报告各自的活跃手机数量变化,同时附带矩阵中该方格的行号和列号。

你需要编写一个程序,接收这些报告,并回答关于当前某个矩形区域内所有活跃手机数量的查询。

输入格式

输入由多行组成,每行包含一个指令整数以及根据该指令的参数整数。输入的指令和参数格式如下表所示。

指令 参数说明
00 初始化矩阵大小,后面跟一个整数 SS,表示值全为 00 的矩阵为 S×SS \times S注意: 该指令只会出现一次,并且是第一条指令。
11 更新指令,后面跟三个整数 X,Y,AX, Y, A,表示在矩阵中的 (X,Y)(X, Y) 位置,手机数目增加了 AA 个。
22 查询指令,后面跟四个整数 X1,Y1,X2,Y2X_1, Y_1, X_2, Y_2,表示查询从 (X1,Y1)(X_1, Y_1)(X2,Y2)(X_2, Y_2) 矩形区域内所有手机的总数。
33 程序结束。

每个指令都位于一行,具体的参数会随着指令变化而变化。

输出格式

对于每个指令 22,你需要输出一个整数,表示查询矩形区域内所有活跃手机的总数。对于其他指令,程序不需要输出任何内容。

样例

0 4
1 1 2 3
2 0 0 2 2
1 1 1 2
1 1 2 -1
2 1 1 2 3
3
3
4

提示

数据范围

  • 11SS102410241 * 1 \leq S * S \leq 1024 * 1024

  • 32768A32767-32768 \leq A \leq 32767

  • 指令数:3U600023 \leq U \leq 60002

  • 最大手机总数: M=230M = 2^{30}

  • X1X2,Y1Y2X_1 \leq X_2 , Y_1 \leq Y_2

  • 注意有负数,不要使用unsigned!