Pagini recente » Cod sursa (job #2965572) | Cod sursa (job #800802) | Cod sursa (job #3178159) | Cod sursa (job #2276703) | Cod sursa (job #705743)
Cod sursa(job #705743)
#include<cstdio>
#define nmax 15005
int arb[4*nmax+50],val,start,finish,pos,x;
void update(int nod,int left,int right){
if(left == right){
arb[nod]+=x;
return ;
}
int div=(left+right)/2;
if(pos<=div)update(2*nod,left,div);
else update(2*nod+1,div+1,right);
arb[nod]+=x;
}
void query(int nod,int left,int right){
if(start<=left && right<=finish){
val+=arb[nod];
return ;
}
int div=(left+right)/2;
if(start<=div)query(2*nod,left,div);
if(div<finish)query(2*nod+1,div+1,right);
}
int main(void){
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
int n,m,i;
scanf("%d %d\n",&n,&m);
for(i=1;i<=n;++i){
scanf("%d ",&x);
pos=i;
update(1,1,n);
}
while(m--){
scanf("%d %d %d\n",&x,&start,&finish);
if(x){
val=0;
query(1,1,n);
printf("%d\n",val);
}
else{
pos=start; x=-finish;
update(1,1,n);
}
}
return 0;
}