Pagini recente » Borderou de evaluare (job #1223742) | Borderou de evaluare (job #622778) | Cod sursa (job #198903) | Borderou de evaluare (job #2849636) | Cod sursa (job #364618)
Cod sursa(job #364618)
#include <stdio.h>
#define Nmax 15002
int c[Nmax];
int i,op,a,b,n,m;
void add(int i, int a){
int z=0;
while( i<=n ){
c[i] += a;
while( !( i&(1<<z) ) ) z++;
i += (1<<z);
z++;
}
}
int query(int i){
int z=0,sum=0;
while( i>0 ){
sum += c[i];
while( !(i&(1<<z)) ) z++;
i -= (1<<z);
z++;
}
return sum;
}
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",&a), add(i,a);
for(i=1;i<=m;++i){
scanf("%d%d%d",&op,&a,&b);
if(op == 0) add(a,-b);
else printf("%d\n",query(b)-query(a-1));
}
fclose(stdin); fclose(stdout);
return 0;
}