[Cpp] # include <stdio. h ># include <cstring> const int maxn = 1050; int c [maxn] [maxn]; inline int lowbit (int x) {return x & (-x );} void update (int x, int y, int p) {for (int I = x; I <maxn; I + = lowbit (I) for (int j = y; j <maxn; j + = lowbit (j) {c [I] [j] + = p; if (c [I] [j] <0) c [I] [j] = 0 ;}} int query (int x, int y) {int ans = 0; for (int I = x; I> 0; i-= lowbit (I) for (int j = y; j> 0; j-= lowbit (j) ans ++ = c [I] [j]; return ans;} int main () {int op, s, x1, y1, x2, y2, B; while (scanf ("% d", & op) = 1) {if (op = 3) break; else if (op = 0) scanf ("% d", & s), memset (c, 0, sizeof (c); else if (op = 1) scanf ("% d", & x1, & y1, & B ), update (x1 + 1, y1 + 1, B); else if (op = 2) {scanf ("% d", & x1, & y1, & x2, & y2); int ans = query (x2 + 1, y2 + 1)-query (x1, y2 + 1)-query (x2 + 1, y1) + query (x1, y1); printf ("% d \ n", ans) ;}} return 0 ;}