#include <stdio.h>#include <string.h>#include <algorithm>using namespace STD;intc[1048][1048],n;intlowbit[1048];voidAddintXintYintD) {intI,j; for(I=x;i<=n;i+=lowbit[i]) for(J=y;j<=n;j+=lowbit[j]) {C[i][j]+=d; }}intSumintXintY) {intret=0, I,j; for(i=x;i>0; I-=lowbit[i]) for(j=y;j>0; J-=lowbit[j]) {ret+=c[i][j]; }returnRET;}intMain () {intCmd,i,j,x,y,d,r,l,b,t; for(i=1; i<=1024x768+5; i++) lowbit[i]=i& (-i); while(~scanf("%d", &cmd)) {if(cmd==0) {scanf("%d", &n);memsetC0,sizeof(c)); }Else if(cmd==1) {scanf("%d%d%d", &x,&y,&d); Add (x+1, y+1, d); }Else if(cmd==2) {scanf("%d%d%d%d", &l,&b,&r,&t);intAns=sum (r+1, t+1) +sum (l,b)-sum (r+1, b)-sum (l,t+1);printf("%d\n", ans); }Else if(cmd==3)return 0; }return 0;}
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
POJ 1195 Mobile Phones (two-dimensional array)