A. Test instructions:
A bare two-dimensional tree array that (L, B) (R, T) forms the and of all points within the rectangle.
Ans = getsum (r + 1, T + 1)-Getsum (R + 1, b)-getsum (L, T + 1) + getsum (l, B)
#include <cstdio> #include <cstring> #define LOWBIT (x) x&-x #define MAXN 1030int c[maxn][maxn];int N; void update (int x, int y, int val) {for (int i = x; i <= n; i + = Lowbit (i)) {for (int j = y; J <= N; j + = Lowbit (j)) {C[i][j] + = val;}}} int getsum (int x, int y) {int sum = 0;for (int i = x; i > 0; I-= Lowbit (i)) {for (int j = y; j > 0; J-= Lowbit (j)) {sum + = C[i][j];}} return sum;} int main () {int cmd, x, y, Val;int x1, y1, x2, y2;scanf ("%d%d", &cmd, &n); for (int i = 0; I <= N; i++) {for (int j = 0; J <= N; J + +) {C[i][j] = 0;}} while (scanf ("%d", &cmd) && cmd < 3) {if (cmd = = 1) {scanf ("%d%d%d", &x, &y, &val); Update (x + 1, y + 1, val);} else if (cmd = = 2) {scanf ("%d%d%d", &x1, &y1, &x2, &y2); int ans = getsum (x2 + 1, y2 + 1)-Getsum (x2 + 1, y1)-getsum (x1, y2 + 1) + getsum (x1, y1);p rintf ("%d\n", ans);}} return 0;}
POJ 1195 Mobile phones