Pagini recente » Cod sursa (job #525426) | Cod sursa (job #2169986) | Cod sursa (job #2252115) | Cod sursa (job #2525702) | Cod sursa (job #633298)
Cod sursa(job #633298)
#include<stdio.h>
#define lim 30001
FILE*f=fopen("datorii.in","r");
FILE*g=fopen("datorii.out","w");
int n,m,a,b,x;
int w[lim],v[lim];
int main() {
fscanf(f,"%d%d",&n,&m);
for(int i=1;i<=n;++i)
fscanf(f,"%d",&v[i]);
for(int i=1;i<=n;++i){
int y=(i^(i-1))&i;
for(int j=i-y+1;j<=i;++j)
w[i]+=v[j];
}
for(int i=1;i<=m;++i){
fscanf(f,"%d",&x);
if(!x){
fscanf(f,"%d%d",&a,&b);
while(a<=n){
w[a]-=b;
a+=(a^(a-1))&a;
}
}else if(x==1){
fscanf(f,"%d%d",&a,&b);
a--;
int x=0;
int y=0;
while(b){
x+=w[b];
b-=(b^(b-1))&b;
}
while(a){
y+=w[a];
a-=(a^(a-1))&a;
}
fprintf(g,"%d\n",x-y);
}
}
fclose(f);
fclose(g);
return 0;
}