Pagini recente » Istoria paginii runda/23 | Istoria paginii runda/avram_iancu_10/clasament | Cod sursa (job #1292992) | Cod sursa (job #1532866) | Cod sursa (job #431034)
Cod sursa(job #431034)
#include <cstdio>
FILE* fin=fopen("datorii.in","r");
FILE* fout=fopen("datorii.out","w");
#define MAX 15005
int c[MAX],n,m;
void update(int ind,int val){
int pos=0;
while(ind<=n){
c[ind]+=val;
while(!(ind&(1<<pos))){
pos++;
}
ind+=(1<<pos);
pos++;
}
}
int query(int ind){
int s=0,pos=0;
while(ind>0){
s+=c[ind];
while(!(ind&(1<<pos))){
pos++;
}
ind-=(1<<pos);
pos++;
}
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<n;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;
}