Cod sursa(job #184452)

Utilizator amadaeusLucian Boca amadaeus Data 23 aprilie 2008 17:46:53
Problema Arbori de intervale Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <cstdio>

#define NX (1<<15)
using namespace std;

typedef long long ll;

ll T[ NX ];
int N, M;

void upd( int x, int val ) {
	for( ; x <= N; x += x & -x )
		T[x] += val;
}

ll que( int x ) {
	ll sum = 0;
	for( ; x; x -= x & -x )
		sum += T[x];
	return sum;
}

void cit() {
	int i, x, y, op;
	
	scanf( "%d%d", &N, &M );

	for( i = 1; i <= N; i++ ) {
		scanf( "%d", &x );
		upd( i, x);
	}

	while( M-- ) {
		scanf( "%d%d%d", &op, &x, &y );
		if( op == 0 )
			upd( x, -y );
		else
			printf( "%lld\n", que( y ) - que( x-1 ) );
	}
}

int main() {
	freopen( "datorii.in", "r", stdin );
	freopen( "datorii.out", "w", stdout );

	cit();

	return 0;
}