Pagini recente » Cod sursa (job #1650063) | Cod sursa (job #231678) | Cod sursa (job #1143479) | Cod sursa (job #1890132) | Cod sursa (job #2260027)
#include<cstdio>
using namespace std;
FILE *in=fopen("datorii.in","r");
FILE *out=fopen("datorii.out","w");
int n,m,x,c,a,b,tree[15005];
void update1(int i,int x)
{
while(i<=n){
tree[i]+=x;
i+=(i & -i);
}
}
void update2(int i,int x)
{
while(i<=n){
tree[i]-=x;
i+=(i & -i);
}
}
int query(int i){
int s=0;
while(i>0){
s+=tree[i];
i-=(i & -i);
}
return s;
}
int main(){
fscanf(in,"%d%d",&n,&m);
for(int i=1;i<=n;i++){
fscanf(in,"%d",&x);
update1(i,x);
}
while(m--){
fscanf(in,"%d",&c);
if(c==0){
fscanf(in,"%d%d",&a,&b);
update2(a,b);
}
else{
fscanf(in,"%d%d",&a,&b);
fprintf(out,"%d\n",query(b)-query(a-1));
}
}
}