Pagini recente » Cod sursa (job #3288706) | Cod sursa (job #2911337) | Cod sursa (job #1759139) | Cod sursa (job #572325) | Cod sursa (job #1707720)
#include<cstdio>
using namespace std;
int n,AIB[15005],m,x,c,t,v,p,q;
int adaugare(int x,int i)
{
int ind=i;
int p=1;
int poz=0;
while (ind<=n)
{
AIB[ind]+=x;
while (!(ind & p))
{
poz++;
p=(p<<1);
}
ind=ind+p;
poz++;
p=(p<<1);
}
}
int suma(int i)
{
int ind=i;
int p=1;
int poz=0;
int suma=0;
while (ind>0)
{
suma+=AIB[ind];
while (!(ind&p))
{
p=(p<<1);
poz++;
}
ind-=p;
poz++;
p=(p<<1);
}
return suma;
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d",&x);
adaugare(x,i);
}
for(int i=1;i<=m;i++)
{
scanf("%d",&c);
if (c==0)
{
scanf("%d%d",&t,&v);
adaugare(-v,t);
}
else
{
scanf("%d%d",&p,&q);
printf("%d\n",suma(q)-suma(p-1));
}
}
return 0;
}