Pagini recente » Cod sursa (job #2521609) | Cod sursa (job #35665) | Cod sursa (job #1141355) | Cod sursa (job #317453) | Cod sursa (job #1427727)
#include <stdio.h>
const char *fi = "datorii.in";
const char *fo = "datorii.out";
int bin[15050], N;
int zeros (int x) {
return ( x ^ (x - 1)) & x;
}
void Add (int pos, int val) {
for (int i = pos; i <= N; i += zeros(i))
bin[i] += val;
}
int Compute (int pos) {
int Ans = 0;
for (int i = pos; i > 0; i -= zeros(i))
Ans += bin[i];
return Ans;
}
int main(int argc, const char * argv[]) {
freopen (fi, "r", stdin);
freopen (fo, "w", stdout);
int T,x;
scanf("%d%d",&N,&T);
for (int i=1; i <= N; ++ i) {
scanf("%d",&x);
Add(i,x);
}
int a,b,c;
while (T -- ) {
scanf("%d%d%d",&a,&b,&c);
if (a == 0)
Add (b,-c);
else
printf("%d\n",Compute(c) - Compute(b-1));
}
return 0;
}