Cod sursa(job #348392)

Utilizator andrei.12Andrei Parvu andrei.12 Data 15 septembrie 2009 18:26:58
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<stdio.h>

int n, m, i, x, tip, t, v, d[15002];

void update(int poz, int val){
	for (; poz <= n; poz += (poz ^ (poz-1)) & poz)
		d[poz] += val;
}
int query(int poz){
	int rez = 0;

	for (; poz; poz -= (poz ^ (poz-1)) & poz)
		rez += d[poz];

	return rez;
}

int main()
{
	freopen("datorii.in", "rt", stdin);
	freopen("datorii.out", "wt", stdout);

	scanf("%d%d", &n, &m);
	for (i = 1; i <= n; i ++){
		scanf("%d", &x);

		update(i, x);
	}
	for (i = 1; i <= m; i ++){
		scanf("%d%d%d", &tip, &t, &v);

		if (!tip)
			update(t, -v);
		else
			printf("%d\n", query(v) - query(t-1));
	}

	return 0;
}