Pagini recente » Cod sursa (job #2649497) | Cod sursa (job #1140400) | Cod sursa (job #40756) | Cod sursa (job #2128993) | Cod sursa (job #469197)
Cod sursa(job #469197)
#include <cstdio>
using namespace std;
#define ZEROS(x) ( (x) & (-x) )
int aib[15001],vec[15001];
int nr , n , m , o , p;
void update(int p , int nr ) {
vec[ p ] += nr;
if( vec[ p ] < 0 )
nr += vec[ p ] , vec[ p ] = 0;
aib[ p ] += nr;
for( int i = p + ZEROS(p) ; i <= n ; i += ZEROS(i) )
aib[ i ] += nr;
}
int query(int p) {
int sum = 0;
for( int i = p ; i > 0 ; i -= ZEROS(i) )
sum += aib[i];
return sum;
}
int main() {
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d %d",&n,&m);
for(int i = 1 ; i <= n ; i++ ) {
scanf("%d",&nr);
update( i , nr );
}
for(int i = 1 ; i <= m ; i++ ) {
scanf("%d %d %d", &o, &p, &nr);
if( o == 0 ) update( p , -nr );
if( o == 1 ) printf("%d\n", query( nr ) - query( p - 1 ) );
}
return 0;
}