Pagini recente » Cod sursa (job #35593) | Cod sursa (job #2116969) | Cod sursa (job #2978558) | Cod sursa (job #1716859) | Cod sursa (job #7936)
Cod sursa(job #7936)
#include <stdio.h>
#define MN (15010)
int aib[MN];
int N, M;
void put(int p, int x)
{
//printf("Going to insert %d at %d\n", x, p); fflush(stdout);
for(; p <= N; p += ~(p-1)&p)
//printf("pos %d\n", p), fflush(stdout), aib[p] += x;
aib[p] += x;
}
int get(int p)
{
int s = 0;
for(; p > 0; p -= ~(p-1)&p)
s += aib[p];
return s;
}
int main()
{
int i, a, b, c;
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
scanf("%d %d", &N, &M);
for(i = 1; i <= N; i ++) {
scanf("%d", &a);
put(i, a);
}
for(i = 0; i < M; i ++) {
scanf("%d %d %d\n", &a, &b, &c);
if(a) {
int tmp1 = get(b-1), tmp2 = get(c);
printf("%d\n", tmp2-tmp1);
} else put(b, -c);
}
fclose(stdin);
fclose(stdout);
return 0;
}