Pagini recente » Cod sursa (job #556355) | Cod sursa (job #27258) | Cod sursa (job #90564) | Cod sursa (job #1178222) | Cod sursa (job #329678)
Cod sursa(job #329678)
#include<stdio.h>
#include<stdlib.h>
int main(){
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
int n,m,*a,*aib;
scanf("%d%d",&n,&m);
a=(int *)calloc(n+1,sizeof(int));
aib=(int *)calloc(n+1,sizeof(int));
int i,op,p,q,x,s1,s2;
for(i=1;i<=n;i++){
scanf("%d",&x);
a[i]=a[i-1]+x;
}
for(i=1;i<=n;i++)
aib[i]=a[i]-a[i-((i^(i-1))&i)];
for(i=1;i<=m;i++){
scanf("%d%d%d",&op,&p,&q);
if(op==0){
x=p;
while(x<=n){
aib[x]-=q;
x+=(x^(x-1))&x;
}
}
else{
x=p-1;
s1=0;s2=0;
while(x){
s1+=aib[x];
x-=(x^(x-1))&x;
}
x=q;
while(x){
s2+=aib[x];
x-=(x^(x-1))&x;
}
printf("%d\n",s2-s1);
}
}
return 0;
}