Pagini recente » Cod sursa (job #2502019) | Cod sursa (job #3195195) | Cod sursa (job #666188) | Cod sursa (job #2341978) | Cod sursa (job #216551)
Cod sursa(job #216551)
#include <stdio.h>
const int N_MAX = 15010;
int v[N_MAX], aib[N_MAX], N;
inline int tata(int poz)
{
return (poz + (poz ^ (poz & (poz - 1))));
}
void update(int poz, int val)
{
while (poz <= N) {
aib[poz] -= val;
poz += poz ^ (poz & (poz - 1));
}
}
int query(int poz)
{
int sum = 0;
while (poz) {
sum += aib[poz];
poz &= (poz - 1);
}
return sum;
}
int main()
{
freopen("datorii.in", "r", stdin);
#ifndef _SCREEN_
freopen("datorii.out", "w", stdout);
#endif
int M;
scanf("%d %d\n", &N, &M);
for (int i = 1; i <= N; i++) {
scanf("%d ", &v[i]);
}
for (int i = 1; i <= N; i ++) {
aib[i] += v[i];
aib[tata(i)] += aib[i];
}
int op, a, b;
for (int i = 1; i <= M; i ++) {
scanf("%d %d %d\n", &op, &a, &b);
if (op == 0) update(a, b);
else printf("%d\n", query(b) - query(a - 1));
}
return 0;
}