Cod sursa(job #2172368)

Utilizator Andrei_Info1Ionescu Andrei Andrei_Info1 Data 15 martie 2018 16:12:56
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <cstdio>
#define zeros(x) ((x-1) ^ x) & x
using namespace std;
int n, AIB[15005];

void Add(int x, int qt)
{
  for(int i=x ; i<=n ; i+=zeros(i))
    AIB[i]+= qt;
}
int Compute(int x)
{
  int sum=0;
  for(int i=x ; i>0 ; i-=zeros(i))
    sum+=AIB[i];
  return sum;
}
int main()
{
    freopen("datorii.in","r",stdin);
    freopen("datorii.out","w",stdout);
  
    int i, m, op, x, y;
    scanf("%d%d", &n, &m);
    for(i=1 ; i<=n ; i++)
      scanf("%d", &op), Add(i, op);
    for(i=1 ; i<=m ; i++)
    {
      scanf("%d%d%d", &op, &x, &y);
      if(!op)
        Add(x, -y);
      else
        printf("%d\n", Compute(y)-Compute(x-1));
    }
    return 0;
}