Pagini recente » Cod sursa (job #1699045) | Cod sursa (job #1636246) | Cod sursa (job #2732087) | Cod sursa (job #2430786) | Cod sursa (job #485532)
Cod sursa(job #485532)
#include<stdio.h>
const int NMAX = 15001;
int N, M, A[NMAX];
int lsb(int i) {
return i ^ (i & (i - 1));
}
void update(int semn, int poz, int val) {
int i;
for(i=poz; i<=N; i+=lsb(i))
A[i]+=(val*semn);
}
int query(int poz) {
int sum=0, i;
for(i=poz; i>0; i-=lsb(i))
sum+=A[i];
return sum;
}
int main() {
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
int i, val, st, dr, tip, poz;
scanf("%d %d",&N,&M);
for(i=1; i<=N; i++) {
scanf("%d",&val);
update(1,i,val);
}
for(; M; --M) {
scanf("%d",&tip);
if(tip==0) {
scanf("%d %d",&poz,&val);
update(-1,poz,val);
}
else {
scanf("%d %d",&st,&dr);
printf("%d\n",query(dr)-query(st-1));
}
}
return 0;
}