Cod sursa(job #1138808)

Utilizator Alexa2001Alexa Tudose Alexa2001 Data 10 martie 2014 16:50:11
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>
#define ub(x) (x&(-x))

using namespace std;
int x,y,i,n,m,a[15005],ii,caz;

void upd(int x,int poz)
{
   int i;
   for(i=poz;i<=n;i+=ub(i))
   a[i]+=x;
}

int suma(int poz)
{
  int i,sum=0;
  for(i=poz;i>=1;i-=ub(i))
  sum+=a[i];
  return sum;
}

int S(int p1,int p2)
{
    return suma(p2)-suma(p1-1);
}

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);
       upd(x,i);
    }

    for(ii=1;ii<=m;++ii)
    {
       scanf("%d%d%d",&caz,&x,&y);

       if(caz==0)
       {
          for(i=x;i<=n;i+=ub(i))
          a[i]-=y;
       }
       else
       {
          printf("%d\n",S(x,y));
       }

    }







    return 0;
}