Cod sursa(job #138513)

Utilizator ScrazyRobert Szasz Scrazy Data 18 februarie 2008 19:16:28
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
//AIB
#include <stdio.h> 
#define nmax 16000 

int tree[nmax],n,m;

int read(int idx)
{
    int sum = 0;
    while (idx)
    {
	sum += tree[idx];
	idx -= (idx & - idx);
    }
    return sum;
}

void update(int idx , int val)
{
    while (idx<=n)
    {
	tree[idx] += val;
	idx += (idx & -idx);
    }
}

int main()
{
    	freopen("datorii.in","r",stdin); 
	freopen("datorii.out","w",stdout); 
	int i,j,i1,i2; 
	scanf("%d %d",&n,&m); 
	for(i=1;i<=n;i++) 
	    scanf("%d",&j),update(i,j);
						
	for(i=1;i<=m;i++) 
	{ 
	    scanf("%d %d %d",&j,&i1,&i2); 
	    if (j==0) 
		update(i1,-i2); 
	    else 
		printf("%d\n",read(i2)-read(i1-1)); 
	}

	return 0;
}