记录编号 568318 评测结果 AAAAAAAAAA
题目名称 [IOI 2001] 移动电话 最终得分 100
用户昵称 Gravatar遥时_彼方 是否通过 通过
代码语言 C++ 运行时间 0.027 s
提交时间 2021-12-24 13:41:45 内存使用 5.17 MiB
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
using namespace std;
char ra;
int rp;
inline void read(int &x)
{
	rp=1;
	x&=0;
	ra=getchar();
	while(ra<'0'||ra>'9')
	{
		if(ra=='-') rp=-1;
		ra=getchar();
	} 
	while(ra>='0'&&ra<='9') 
	{
		x=(x<<3)+(x<<1)+(ra^48);
		ra=getchar();
	}
	x*=rp;
} 
inline void write(int x)
{
	if(x/10) write(x/10);
	putchar(x%10+48);
}
///////////以上为快读快输 
int nc;
int f[1100][1100];
inline int lowbit(int x){return x&-x;}
inline void ADD(int x,int y,int inc)
{
	for(int i=x;i<=nc;i+=lowbit(i))
		for(int o=y;o<=nc;o+=lowbit(o)) f[i][o]+=inc;
	return;
}
inline int fin(int x,int y)
{
	int re=0;
	for(int i=x;i;i-=lowbit(i))
		for(int o=y;o;o-=lowbit(o)) re+=f[i][o];
//	cout<<x<<" "<<y<<":"<<re<<endl;
	return re;
}
int main()
{
	freopen("mobilephones.in","r",stdin);
	freopen("mobilephones.out","w",stdout);
    read(nc);
    read(nc);
    int s1,s2,s3,s4;
    read(s1);
    while(s1!=3)
    {
    	if(s1==1)
    	{
    		read(s2);
    		read(s3);
    		read(s4);
//    		cout<<s2<<" "<<s3<<":rad:"<<s4<<endl;
    		ADD(s2+1,s3+1,s4); 
		}
		else
		{
			read(s1);
			read(s2);
			read(s3);
			read(s4);
			s1+=1;
			s2+=1;
			s3+=1;
			s4+=1;
			s1=fin(s3,s4)-fin(s3,s2-1)-fin(s1-1,s4)+fin(s1-1,s2-1);
			if(s1<0) 
			{
				putchar(45);
				s1=-s1;
			}
			write(s1);
			putchar(10);
		}
		read(s1); 
	}
	return 0;
}