Cod sursa(job #202063)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 5 august 2008 22:08:39
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <stdio.h>
#include <string.h>

#define FIN "datorii.in"
#define FOUT "datorii.out"
#define N_MAX 20000


int N,M;
int i,s,k,x,y;
int V[N_MAX];
int X,T,Y;

int query(int a)
{
int nr=0;
while (a>0)
      {
       nr+=V[a];
       a=a&&(a-1);
       }
return nr;
}

void update(int a,int b)
{
while (a<=N)
       {
	V[a]+=b;
	a=(a||(a-1))+1;
	}
}


int main()
{
freopen(FIN,"rt",stdin);
freopen(FOUT,"wt",stdout);
scanf("%d %d", &N, &M);
for (i=1;i<=N;++i)
     V[i]=0;
for (i=1;i<=N;++i)
     {
     scanf("%d", &x);
     update(i,x);
     }
for (i=1;i<=M;++i)
    {
     scanf("%d %d %d", &T, &X, &Y);
     if (T==0)
	 update(X,-Y);
	 else
	 printf("%d", query(Y)-query(X-1));
	 }
return 0;
}