Cod sursa(job #2386602)

Utilizator SoranaAureliaCatrina Sorana SoranaAurelia Data 23 martie 2019 11:47:04
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <cstdio>
#define zeros(x) ((x ^ (x - 1)) & x )
using namespace std;

int aib[15005], n, m;
int x;

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 rez(){

    scanf("%d %d",&n, &m);


    for(int i=1; i<=n;i++){
        scanf("%d",&x);
        add(i,x);
    }
}
void query(){

    int tip, a, b;
    for(int i=1; i<=m; i++){

        scanf("%d %d %d\n",&tip, &a, &b);
        if(tip==0)
            add(a,-b);
        else printf("%d\n",compute(b)-compute(a-1));
    }
}


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

    rez();
    query();
    return 0;
}