Pagini recente » Cod sursa (job #3258695) | Cod sursa (job #3237605) | Cod sursa (job #2517152) | Cod sursa (job #1115291) | Cod sursa (job #46113)
Cod sursa(job #46113)
#include<cstdio>
using namespace std;
int h[1<<13],n,m;
void nbit(int,int&);
int sum(int);
int sum(int,int);
void mod(int,int);
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d",&n,&m);
int opt,i,j,k;
for(i=1;i<=n;i++)
{
scanf("%d",&j);
if(j) mod(i,j);
}
for(k=0;k<m;k++)
{
scanf("%d%d%d",&opt,&i,&j);
if(!opt) mod(i,-j);
else printf("%d\n",sum(i,j));
}
return 0;
}
int sum(int x)
{
int s=0,t=1;
while(x)
{
s+=h[x];
nbit(x,t);
x-=t;
t<<=1;
}
return s;
}
int sum(int a,int b)
{
return sum(b)-sum(a-1);
}
void mod(int x,int val)
{
int t=1;
while(x<=n)
{
h[x]+=val;
nbit(x,t);
x+=t;
t<<=1;
}
}
void nbit(int x,int &t)
{
while(!(x&t))
t<<=1;
}