记录编号 348832 评测结果 AAAAAAAAAA
题目名称 1532.[IOI 2001] 移动电话 最终得分 100
用户昵称 AAAAAAAAAA 是否通过 通过
代码语言 C++ 运行时间 0.083 s
提交时间 2016-11-14 16:55:27 内存使用 4.37 MiB
显示代码纯文本
#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;
}