Pagini recente » Cod sursa (job #2817525) | Cod sursa (job #1207703) | Cod sursa (job #324715) | Cod sursa (job #1057186) | Cod sursa (job #2786487)
#include <fstream>
using namespace std;
int aib[15001], n;
void update( int poz, int val ) {
while(poz<=n) {
aib[poz] += val;
poz = poz + (poz&(-poz));
}
return;
}
int findSum( int dr ) {
int s = 0;
while( dr ) {
s += aib[dr];
dr -=(dr&(-dr));
}
return s;
}
int query( int st, int dr ) {
return findSum( dr ) - findSum( st - 1 );
}
int main() {
ifstream cin("datorii.in");
ofstream cout("datorii.out");
int m, i, p, a, b;
cin>>n>>m;
for( i = 1; i <= n; i++ ) {
cin>>a;
update( i, a );
}
for( i = 1; i <= m; i++ ) {
cin>>p;
cin>>a>>b;
if( p == 1 ) {
cout<<query( a, b )<<"\n";
} else {
update( a, -b );
}
}
return 0;
}