Cod sursa(job #1179969)

Utilizator costyrazvyTudor Costin Razvan costyrazvy Data 29 aprilie 2014 17:23:47
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <cstdio>

#define ub(x) (x&(-x))
#define NMAX 15001

using namespace std;

int A[NMAX];
int i,N,M,test,x,y;

void add(int x,int val)
  {
      int i=0;

      for(i=x;i<=N;i+=ub(i)) A[i]+=val;
  }

int Sum(int x)
   {
       int i=0,S=0;

       for (i=x;i>=1;i-=ub(i)) S+=A[i];

       return S;
   }

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

    scanf("%d%d",&N,&M);
    for (i=1;i<=N;++i)
        {
           scanf("%d",&x);
           add(i,x);
        }

    for (i=1;i<=M;++i)
        {
            scanf("%d%d%d",&test,&x,&y);
            switch(test)
              {
                  case 0 : add(x,-y);
                  case 1 : printf("%d\n",Sum(y)-Sum(x-1));
              }
        }
    return 0;
}