Pagini recente » Cod sursa (job #1030192) | Cod sursa (job #2006830) | Cod sursa (job #2155755) | Cod sursa (job #1497764) | Cod sursa (job #1583656)
#include<cstdio>
int N;
const int NMAX=10000005;
int aib[NMAX],v[NMAX];
int lsb(int val)
{
return val&(-val);
}
void update(int poz,int val)
{
for(;poz<=N;poz+=lsb(poz))
aib[poz]+=val;
}
int query(int poz)
{
int S=0;
for(;poz;poz-=lsb(poz))
S+=aib[poz];
return S;
}
int main()
{
//freopen("a.in","r",stdin);
//freopen("a.out","w",stdout);
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
int n,m;
scanf("%d %d",&n,&m);
N=n;
for(int i=1;i<=n;i++)
scanf("%d ",&v[i]),update(i,v[i]);
for(int i=1;i<=m;i++)
{
int tip,a,b;
scanf("%d %d %d ",&tip,&a,&b);
if(tip==0)
{
v[a]-=b;
update(a,-b);
}
else
{
printf("%d\n",query(b)-query(a-1));
}
}
}