Pagini recente » Cod sursa (job #396905) | Cod sursa (job #2556477) | Cod sursa (job #854276) | Cod sursa (job #346296) | Cod sursa (job #609155)
Cod sursa(job #609155)
#include<stdio.h>
#define maxn 15005
#define zeros(x) ( ( x^ (x-1) ) & x )
int AIB[maxn],N,M;
void Update(int x,int val,int q)
{
if(q==0)
for(int i=x;i<=N;i+=zeros(i))
AIB[i]+=val;
else if(q==1)
for(int i=x;i<=N;i+=zeros(i))
AIB[i]-=val;
}
int Query(int x)
{
int sum=0;
for(int i=x;i>0;i-=zeros(i))
sum+=AIB[i];
return sum;
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
int op,a,b;
scanf("%d %d",&N,&M);
for(int i=1;i<=N;i++)
{
scanf("%d",&a);
Update(i,a,0);
}
for(int i=1;i<=M;i++)
{
scanf("%d %d %d",&op,&a,&b);
if(op==0) Update(a,b,1);
else if(op==1) printf("%d\n",Query(b)-Query(a-1));
}
}