Pagini recente » Cod sursa (job #45965) | Cod sursa (job #2723694) | Cod sursa (job #1042243) | Cod sursa (job #623006) | Cod sursa (job #599101)
Cod sursa(job #599101)
#include <stdio.h>
#define NMAX 15001
int a[NMAX], n;
int m;
long long secv(int n) { //suma 1...n
long long sum = 0, curent;
curent = n;
while(curent > 0) {
sum += a[curent];
curent -= curent ^ (curent & (curent-1));
}
return sum;
}
void add(int poz, int val) {
int curent;
curent = poz;
while(curent <= n) {
a[curent] += val;
curent += curent ^ (curent & (curent-1));
}
}
int main() {
int i, x, op, p1, p2;
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
scanf("%d %d", &n, &m);
for(i=1;i<=n;++i) {
scanf("%d", &x);
add(i, x);
}
for(i=0;i<m;++i) {
scanf("%d %d %d", &op, &p1, &p2);
if(op == 0) {
add(p1, -p2);
} else {
if(p1 == 1) {
printf("%lld\n", secv(p2));
} else {
printf("%lld\n", secv(p2) - secv(p1-1));
}
}
}
return 0;
}