Cod sursa(job #1556431)

Utilizator DrumeaVDrumea Vasile DrumeaV Data 24 decembrie 2015 20:32:40
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>
#include <string.h>
#include <algorithm>

using namespace std;

const int MN = 15005;

int N,M;
int bit[MN];

void update(int idx,int val)
{
    while (idx <= N)
          bit[idx] += val,idx += idx & (-idx);
}

int query(int idx)
{
    int sum = 0;

    while (idx)
          sum += bit[idx],idx -= idx & (-idx);

    return sum;
}

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

     scanf("%d %d",&N,&M);

     for (int i = 1;i <= N;i++)
     {
         int x;

         scanf("%d",&x);
         update(i,x);
     }

     while (M--)
     {
         int op,a,b;

         scanf("%d %d %d",&op,&a,&b);

         if (!op)
            update(a,-b);
       else
            printf("%d\n",query(b) - query(a - 1));
     }

  return 0;
}