Pagini recente » Cod sursa (job #846407) | Cod sursa (job #759389) | Cod sursa (job #1095282) | Cod sursa (job #238160) | Cod sursa (job #517998)
Cod sursa(job #517998)
#include <stdio.h>
#define zeros(x) ( (x ^ (x - 1)) & x )
#define NMax 15005
const char IN[]="datorii.in",OUT[]="datorii.out";
int N,M,C,T,V,P,Q;
int a[NMax];
int arb[NMax];
void Add(int x,int quantity)
{
int i;
for (i=x; i<=N ; i+=zeros(i))
arb[i] += quantity;
}
int Compute(int x)
{
int i , ret=0;
for (i=x ; i>0 ; i-=zeros(i))
ret+= arb[i];
return ret;
}
int main()
{
int i;
freopen(IN,"r",stdin);
scanf("%d%d",&N,&M);
for (i=1;i<=N;i++)
scanf("%d",a+i),
Add(i,a[i]);
freopen(OUT,"w",stdout);
for (i=0;i<M;i++)
{
scanf("%d",&C);
switch(C)
{
case 0:
scanf("%d%d",&T,&V);
Add(T,-V);
break;
case 1:
scanf("%d%d",&P,&Q);
printf("%d\n", Compute(Q) - Compute(P-1));
break;
}
}
fclose(stdout);
fclose(stdin);
return 0;
}