Pagini recente » Cod sursa (job #1250162) | Cod sursa (job #2514710) | Cod sursa (job #1984285) | Cod sursa (job #3242618) | Cod sursa (job #599092)
Cod sursa(job #599092)
#include <stdio.h>
#define NMAX 15000
int a[NMAX], n;
int m;
int secv(int n) { //suma 1...n
int sum = 0, curent, nr, aux;
curent = n;
while(curent > 0) {
sum += a[curent];
//numar cati de 0 are la sfarsit
curent -= curent ^ (curent & (curent-1));
}
return sum;
}
void add(int poz, int val) {
int curent, aux, nr;
curent = poz;
while(curent <= n) {
a[curent] += val;
//numar cati de 0 are la sfarsit
curent += curent ^ (curent & (curent-1));
}
}
int main() {
int i, x, curent, nr, 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("%d\n", secv(p2));
} else {
printf("%d\n", secv(p2) - secv(p1-1));
}
}
}
return 0;
}