显示代码纯文本
#include<cstdio>
namespace IO{
char buf[1<<15],*fs,*ft;
inline char gc(){return (fs==ft&&(ft=(fs=buf)+fread(buf,1,1<<15,stdin),fs==ft))?0:*fs++;}
inline int qr(){
char c=gc();
int x=0,f=1;
while(c<'0'||c>'9'){
if(c=='-'){
f=-1;}
c=gc();}
while(c>='0'&&c<='9'){
x=(x<<1)+(x<<3)+c-'0';
c=gc();}
return x*f;}
}using namespace IO;
using namespace std;
/**********************************************************************************************/
int a[1030][1030],s,n;
int lowbit(int x){
return x&(-x);}
void add(int x,int y,int z){
for(int i=x;i<=n;i+=lowbit(i)){
for(int j=y;j<=n;j+=lowbit(j)){
a[i][j]+=z;}}}
int sum(int x,int y){
int temp=0;
for(int i=x;i>=1;i-=lowbit(i)){
for(int j=y;j>=1;j-=lowbit(j)){
temp+=a[i][j];}}
return temp;}
int getsum(int l,int b,int r,int t){
return sum(r,t)-sum(r,b-1)-sum(l-1,t)+sum(l-1,b-1);}
int main(){
freopen ("mobilephones.in","r",stdin);
freopen ("mobilephones.out","w",stdout);
int l,b,r,t,x,y,z;
s=qr();
while(s!=3){
if(s==0){
n=qr();}
if(s==1){
x=qr();y=qr();z=qr();
add(x+1,y+1,z);}
if(s==2){
l=qr();b=qr();r=qr();t=qr();
printf("%d\n",getsum(l+1,b+1,r+1,t+1));}
s=qr();}
return 0;
}