Cod sursa(job #983392)

Utilizator ionut_ungureanuUngureanu Vladut Ionut ionut_ungureanu Data 11 august 2013 17:28:38
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>
#define FIN "datorii.in","r",stdin
#define FOUT "datorii.out","w",stdout
#define zeros(x) ( (x ^ (x - 1)) & x )

using namespace std;

int n,m,i,x,y,z;
int AIB[15001];

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(FIN);
    freopen(FOUT);

    scanf("%d %d",&n,&m);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&x);
        Add(i,x);
    }

    for(i=1;i<=m;i++)
    {
        scanf("%d %d %d",&x,&y,&z);
        if(!x)Add(y,-z);
        else printf("%d\n",Compute(z)-Compute(y-1));
    }

    return 0;
}