输入
当输入0时,输入矩阵大小
输入1时,输入x, y,a;(x, y)点加上a;
输入2时,输入x1, y1, x2, y2;求(x1, y1)(x2, y2)构成矩阵的大小
#include <stdio.h>
#include <string.h>
#include <iostream>
int c[1100][1100], n;
int lowbit(int x)
{
return x&(-x);
}
void add(int x, int y, int d)
{
for(int i = x; i < n; i += lowbit(i))
{
for(int j = y; j < n; j += lowbit(j))
{
c[i][j] += d;
}
}
}
int sum(int x, int y)
{
int s = 0;
for(int i = x; i > 0; i -= lowbit(i))
{
for(int j = y; j > 0; j -= lowbit(j))
{
s += c[i][j];
}
}
return s;
}
int main()
{
// memset(ans, 0, sizeof(ans));
memset(c, 0, sizeof(c));
int p;
while(scanf("%d", &p) != EOF)
{
if(p == 3)
{
break;
}
else if(p == 0)
{
scanf("%d", &n);
n = 1100;
}
else if(p == 1)
{
int x, y, z;
scanf("%d%d%d", &x, &y, &z);
add(x + 1, y + 1, z);
}
else if(p == 2)
{
int a, b, c, d;
scanf("%d%d%d%d", &a, &b, &c, &d);
int ans = sum(c + 1, d + 1) +sum(a, b) - sum(a, d + 1) - sum(c + 1, b);
printf("%d\n", ans);
}
}
}