记录编号 |
568318 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[IOI 2001] 移动电话 |
最终得分 |
100 |
用户昵称 |
遥时_彼方 |
是否通过 |
通过 |
代码语言 |
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;
}