Pagini recente » Istoria paginii runda/simulare-cartita-13/clasament | Autentificare | Cod sursa (job #1010282) | Cod sursa (job #1440564) | Cod sursa (job #431049)
Cod sursa(job #431049)
#include <cstdio>
FILE* fin=fopen("datorii.in","r");
FILE* fout=fopen("datorii.out","w");
#define MAX 16000
#define zero(x) (((x^(x-1))&x))
int c[MAX],n,m;
void update(int ind,int val){
while(ind<=n){
c[ind]+=val;
ind+=zero(ind);
}
}
int query(int ind){
int s=0;
while(ind>0){
s+=c[ind];
ind-=zero(ind);
}
return s;
}
int main(){
int d,op,a,b;
fscanf(fin,"%d %d\n",&n,&m);
for(int i=1;i<=n;i++){
fscanf(fin,"%d ",&d);
update(i,d);
}
for(int i=0;i<m;i++){
fscanf(fin,"%d %d %d\n",&op,&a,&b);
if(op==0){
update(a,-b);
}else{
fprintf(fout,"%d\n",query(b)-query(a-1));
}
}
fclose(fin);
fclose(fout);
return 0;
}