Pagini recente » Cod sursa (job #1878266) | Cod sursa (job #794051) | Cod sursa (job #375189) | Cod sursa (job #659712) | Cod sursa (job #93875)
Cod sursa(job #93875)
#include <stdio.h>
long m,n,b[15000];
int a[15000];
int suma(int i){
int s=0;
while (i>0){
s+=a[i];
i-=(i^(i-1))&i;
}
return s;
}
void modificare(int i,int x, int semn){
while (i<=n) {
a[i]+=semn*x;
i+=(i ^ (i-1)) & i;//i=i+(i xor (i-1)and i) pe biti
}
}
void citire(){
int x;
scanf("%ld%ld",&n,&m);
for (int i=1; i<=n; i++){
scanf("%d",&x);
modificare(i,x,1);
}
}
void calc(){
int p,x,y;
for (int i=1; i<=m; i++){
scanf("%d%d%d",&p,&x,&y);
if (p==0) { //modificare
modificare(x,y,-1);
}
else
printf("%d\n",suma(y)-suma(x-1));
}
}
int main(){
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
citire();
calc();
fclose(stdin);
fclose(stdout);
return 0;
}