# include<stdio.h>
# include<string.h>
int a[1000005];
int lowbit(int x)
{
return x&-x;
}
void update(int x,int y)
{
while(x>0)
{
a[x]=a[x]+y;//printf("%d ",a[x]);
x=x-lowbit(x);
}
}
int get(int x,int y)
{
int sum=0;
while(x<=y)
{
sum=sum+a[x];//printf("%d ",sum);
x=x+lowbit(x);
}
return sum;
}
int main()
{
int t,m,sum,max=0;
char str[10];
memset(a,0,sizeof(a));
scanf("%d%d",&t,&m);
while(t--)
{
int b,c,d,len;
scanf("%s",str);
len=strlen(str);
if(len==3)
{
scanf("%d%d%d",&d,&b,&c);
if(max<d)
{
max=d;
}
if(max<b)
{
max=b;
}
update(b,c);
update(d-1,-c);
}
else
{
scanf("%d",&d);
sum=get(d,max);
printf("%d\n",sum);
}
}
return 0;
}
树状数组之插间问点
最新推荐文章于 2022-04-21 08:43:47 发布