Pagini recente » Cod sursa (job #2706440) | Cod sursa (job #1115517) | Cod sursa (job #2903320) | Cod sursa (job #2170083) | Cod sursa (job #1436796)
#include<cstdio>
int n,i,j,m,c,k,v[15001],nr;
void add(int poz,int val)
{
int c=0;
while(poz<=n)
{
v[poz]+=val;
while(!(poz&(1<<c)))
c++;
poz+=(1<<c);
c++;
}
}
void add1(int poz,int val)
{
int c=0;
while(poz<=n)
{
v[poz]-=val;
while(!(poz&(1<<c)))
c++;
poz+=(1<<c);
c++;
}
}
int v1(int poz)
{
int c=0,s=0;
while(poz>0)
{
s+=v[poz];
while(!(poz&(1<<c)))
c++;
poz-=(1<<c);
c++;
}
return s;
}
int main ()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d",&k);
add(i,k);
}
for(i=1;i<=m;i++)
{
scanf("%d",&nr);
int q,qq;
if(nr==0)
{
scanf("%d%d",&q,&qq);
add1(q,qq);
}
else
{
scanf("%d%d",&q,&qq);
printf("%d\n",v1(qq)-v1(q-1));
}
}
return 0;
}