记录编号 |
238480 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[IOI 2001] 移动电话 |
最终得分 |
100 |
用户昵称 |
安呐一条小咸鱼。 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.066 s |
提交时间 |
2016-03-19 09:42:09 |
内存使用 |
2.62 MiB |
显示代码纯文本
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<string>
namespace bbb
{
int n,a[1030][1030]={0};
int pan;
int chu;
int QuickRead() {
int zf = 1, ret = 0;
char ch = getchar();
while ((ch < '0' || ch > '9') && ch != '-') ch = getchar();
if (ch == '-') zf = -1;
else ret = ch - '0';
ch = getchar();
while (ch >= '0' && ch <= '9') {
ret = ret * 10 + ch - '0';
ch = getchar();
}
return ret*zf;
}
int Lowbit(int x)
{
return x&(-x);
}
void Add(int s,int t,int w)
{
for(int i=s;i<=n;i+=Lowbit(i))
{
for(int j=t;j<=n;j+=Lowbit(j))
{
a[i][j]+=w;
}
}
}
int Get_sum(int x,int y)
{
int sum=0;
for(int i=x;i>0;i-=Lowbit(i))
{
for(int j=y;j>0;j-=Lowbit(j))
{
sum+=a[i][j];
}
}
return sum;
}
int Total(int s,int t,int x,int y)
{
return Get_sum(x,y)-Get_sum(s-1,y)-Get_sum(x,t-1)+Get_sum(s-1,t-1);
}
void work1()
{
int X,Y,A;
X=QuickRead();
Y=QuickRead();
A=QuickRead();
Add(X+1,Y+1,A);
}
void work2()
{
int L,B,R,T;
L=QuickRead();
B=QuickRead();
R=QuickRead();
T=QuickRead();
int k=Total(L+1,B+1,R+1,T+1);
printf("%d\n",k);
}
int work()
{
chu=QuickRead();
n=QuickRead();
while(1)
{
pan=QuickRead();
if(pan==1)work1();
if(pan==2)work2();
if(pan==3)break;
}
return 0;
}
}
void *_=freopen("mobilephones.in","r",stdin);
void *__=freopen("mobilephones.out","w",stdout);
int jboe=bbb::work();
int main(){;}