Pagini recente » Cod sursa (job #783444) | Cod sursa (job #2913994) | Cod sursa (job #407498) | Cod sursa (job #550883) | Cod sursa (job #717332)
Cod sursa(job #717332)
#include<stdio.h>
#define maxN 15005
FILE*f=fopen("datorii.in","r");
FILE*g=fopen("datorii.out","w");
int n,m,i,val,Op,a,b,aib[maxN];
inline int lsb ( int poz ){
return poz&-poz;
}
inline void update ( int poz , int val ){
while ( poz <= n ){
aib[poz] += val;
poz += lsb(poz);
}
}
inline int query_sum ( int poz ){
int s = 0;
while ( poz ){
s += aib[poz];
poz -= lsb(poz);
}
return s;
}
inline int query_sum(int a,int b){
return query_sum(b) - query_sum(a-1);
}
int main () {
fscanf(f,"%d %d",&n,&m);
for ( i = 1 ; i <= n ; ++i ){
fscanf(f,"%d",&val);
update(i,val);
}
for ( i = 1 ; i <= m ; ++i ){
fscanf(f,"%d %d %d",&Op,&a,&b);
if ( !Op ){
update(a,-b);
}
else{
fprintf( g,"%d\n",query_sum(a,b) );
}
}
fclose(f);
fclose(g);
return 0;
}