Cod sursa(job #1846888)

Utilizator anamaria41Raicu Ana anamaria41 Data 14 ianuarie 2017 09:07:13
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <cstdio>

using namespace std;

#define ub(x)(x&(-x))

int n,aib[15050],m;
void add( int x, int y )
{
    int i=0;
    for(i=x; i<=n; i+=ub(i))
        aib[i]+=y;
}

int suma(int x )
{
    int i=0,s=0;

    for(i=x; i>0; i-=ub(i))
        s+=aib[i];

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

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

    int i,a,c,u,v,s;

    for(i=1; i<=n; i++)
    {
        scanf ("%d",&a);
        add(i,a);
    }

    for(i=1; i<=m; i++)
    {
        scanf("%d%d%d",&c,&u,&v);
        if(c)
        {
            s=suma(v)-suma(u-1);
            printf("%d\n",s);
        }
        else add(u,-v);
    }

    return 0;
}