Pagini recente » Cod sursa (job #227899) | Cod sursa (job #2093205) | Cod sursa (job #66005) | Cod sursa (job #533437) | Cod sursa (job #129492)
Cod sursa(job #129492)
#include <stdio.h>
#define Nmax 15002
long n,m,i,ind,op,p,q,c[Nmax],a,s,poz;
int main(){
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%ld %ld",&n,&m);
for (i=1;i<=n;i++){
scanf("%ld",&a);
ind=i;
poz=0;
while (ind<=n){
c[ind]+=a;
while((long)(ind&(1<<poz))==0)poz++;
ind+=(1<<poz);
poz++;
}
}
for (i=1;i<=m;i++){
scanf("%ld %ld %ld",&op,&p,&q);
if (op==0){
ind=p;
poz=0;
while (ind<=n){
c[ind]-=q;
while((long)(ind&(1<<poz))==0)poz++;
ind+=(1<<poz);
poz++;
}
}
else{
s=0;
ind=q;
poz=0;
while (ind){
s+=c[ind];
while((long)(ind&(1<<poz))==0)poz++;
ind-=(1<<poz);
poz++;
}
ind=p-1;
poz=0;
while (ind){
s-=c[ind];
while((long)(ind&(1<<poz))==0)poz++;
ind-=(1<<poz);
poz++;
}
printf("%ld\n",s);
}
}
return 0;
}