记录编号 | 393664 | 评测结果 | AAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | [IOI 2001] 移动电话 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 0.093 s | ||
提交时间 | 2017-04-11 20:41:04 | 内存使用 | 2.59 MiB | ||
#include<iostream> #include<cstdio> #include<cctype> #define maxn 1025 #define gys mylove using namespace std; int tr[maxn][maxn]={0}; int s; inline void in(int &x) { x=0;int f=1;char t=getchar(); while(!isdigit(t)){if(t=='-')f=-1;t=getchar();} while(isdigit(t)){x=x*10+t-48;t=getchar();} x*=f; } inline int lowbit(int x){ return x&(-x); } inline void add(int x,int y,int a){ for(int i=x;i<=s;i+=lowbit(i)){ for(int j=y;j<=s;j+=lowbit(j)){ tr[i][j]+=a; } } } inline int sum(int x,int y){ int ans=0; for(int i=x;i>0;i-=lowbit(i)){ for(int j=y;j>0;j-=lowbit(j)){ ans+=tr[i][j]; } } return ans; } inline int addsum(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); } inline bool work(void){ int cmd,x,y,a,l,b,r,t; in(cmd); if(cmd==3) return false; else if(cmd==0) in(s); else if(cmd==1) in(x),in(y),in(a),add(x+1,y+1,a); else if(cmd==2) in(l),in(b),in(r),in(t),printf("%d\n",addsum(l+1,b+1,r+1,t+1)); return true; } inline int Main(){ freopen("mobilephones.in","r",stdin); freopen("mobilephones.out","w",stdout); while(work()); return 0; } int main(){;} int gys=Main();