Cod sursa(job #2616594)

Utilizator darkeagleDaniel Popescu darkeagle Data 19 mai 2020 00:38:02
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <bits/stdc++.h>
#define nmax 15001
#define zeros(x) ((x^(x-1)) & x)

using namespace std;
int v[nmax], AIB[nmax];
int n, m;
void Add(int x, int quantity)
{
    int i;
    for(i = x; i <= n; i+=zeros(i))
        AIB[i] += quantity;

}
int Compute(int x)
{

    int i, ret = 0;
    for(i = x; i > 0; i -= zeros(i))
        ret += AIB[i];
    return ret;
}

int main()
{ freopen("datorii.in", "r", stdin);
  freopen("datorii.out", "w", stdout);
  scanf("%d %d",&n,&m);
  int y;
  for(int i = 1;i <= n;i++)
  {

      scanf("%d",&y);
        Add(i,y);
  }
   int x1, s, x2, x3;



   for(int j = 1;j <= m; j++) {
    scanf("%d%d%d",&x1,&x2,&x3);

    if(x1 == 0) {
        Add(x2,-x3);
    }
        else {
         s = Compute(x3) - Compute(x2-1);
        printf("%d\n",s);
    }
   }

    return 0;
}