Cod sursa(job #2214729)

Utilizator NToniBoSSNicolae Tonitza NToniBoSS Data 19 iunie 2018 21:57:36
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <cstdio>

using namespace std;

int aib[15001];

int final_zeros(int x)
{
   return (x^(x-1))&x;
}

int sum(int x)
{
   int rez=0;
   for(int i=x; i>0; i-=final_zeros(i))
      rez+=aib[i];
   return rez;
}

void add(int x,int val,int n)
{
   for(int i=x; i<=n; i+=final_zeros(i))
      aib[i]+=val;
}

int main()
{
   int n,m,i,val,q,x,y;
   freopen("datorii.in","r",stdin);
   freopen("datorii.out","w",stdout);
   scanf("%d%d",&n,&m);
   for(i=1; i<=n; i++)
   {
      scanf("%d",&val);
      add(i,val,n);
   }
   while(m--)
   {
      scanf("%d%d%d",&q,&x,&y);
      if(q==0)
         add(x,-y,n);
      else
         printf("%d\n",sum(y)-sum(x-1));
   }

   return 0;
}