代码(
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn = 1123; int sum[maxn][maxn]; inline int lowbit(int x){ return x&(-x); } void add(int x,int y,int v,int n){ for(int i=x;i<=n;i+=lowbit(i)) for(int j=y;j<=n;j+=lowbit(j)) sum[i][j]+=v; } int query(int x,int y){ int ret = 0; for(int i=x;i>0;i-=lowbit(i)) for(int j=y;j>0;j-=lowbit(j)) ret+=sum[i][j]; return ret; } int main(){ int ord,n; while(~scanf("%d %d",&ord,&n)){ memset(sum,0,sizeof(sum)); int x1,x2,y1,y2; int val; scanf("%d",&ord); while(ord!=3){ if(ord==1){ scanf("%d %d %d",&x1,&y1,&val); x1++,y1++; add(x1,y1,val,n); } else{ scanf("%d %d %d %d",&x1,&y1,&x2,&y2); x1++,x2++,y1++,y2++; val = query(x2,y2)-query(x1-1,y2)-query(x2,y1-1)+query(x1-1,y1-1); printf("%d\n",val); } scanf("%d",&ord); } } return 0; }