Pagini recente » Cod sursa (job #2028903) | Cod sursa (job #2925411) | Cod sursa (job #1123523) | Borderou de evaluare (job #2363896) | Cod sursa (job #2626378)
#include<stdio.h>
#define NMAX 100007
int Aib[NMAX];
int n, Q;
void update(int poz, int val){
while(poz <= n){
Aib[poz] += val;
poz += poz & (poz ^ (poz - 1));
}
}
int query(int poz){
int sol = 0;
while(poz){
sol += Aib[poz];
poz -= poz & (poz ^ (poz - 1));
}
return sol;
}
int main(){
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
scanf("%d %d", &n, &Q);
for(int i = 1; i <= n; ++ i){
int a;
scanf("%d", &a);
update(i, a);
}
for(; Q > 0; -- Q){
int Tip = 0, a = 0, b = 0, Sum = 0;
scanf("%d", &Tip);
scanf("%d %d", &a, &b);
if(Tip == 0)
update(a, -b);
if(Tip == 1)
printf("%d\n", query(b) - query(a - 1));
}
return 0;
}