Cod sursa(job #221938)

Utilizator alex.cepoiAlexandru Cepoi alex.cepoi Data 19 noiembrie 2008 02:54:36
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <cstdio>
#include <vector>
using namespace std;

vector <int> A (15000);
int N, M;

inline int LST (int x) {return x & (-x);}

void update (int x, int y)
{
	for (int i=x; i<=N; i+= LST(i))
		A[i]+= y;
}

int query (int x)
{
	int S=0;
	for (int i=x; i>0; i-= LST(i))
		S+=A[i];

	return S;
}

int main()
{
	freopen ("datorii.in", "r", stdin);
	freopen ("datorii.out", "w", stdout);

	int c, x, y;

	scanf ("%d%d", &N, &M);
	for (int i=1; i<=N; ++i)
	{
		scanf ("%d", &c);
		update (i,c);
	}

	for (int i=0; i<M; ++i)
	{
		scanf ("%d %d %d", &c, &x, &y);
		if (c) printf ("%d\n", (query (y)-query (x-1)));
		else update (x,-y);
	}

	return 0;
}