Cod sursa(job #1398637)

Utilizator raztaapDumitru raztaap Data 24 martie 2015 12:32:55
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>
#define MAXN 16000
int n, m, V[MAXN];
int bit(int x)
{
    return((x&(x-1))^x);
}
void update(int poz, int val)
{
    int i;
    for(i=poz;i<=n;i+=bit(i))
        V[i]+=val;
}
void scade(int poz, int val)
{
    int i;
    for(i=poz;i<=n;i+=bit(i))
        V[i]-=val;
}
int query(int poz)
{
    int S=0,i;
    for(i=poz;i>0;i-=bit(i))
        S+=V[i];
    return S;
}
void rezolva_problema()
{
    int i, x, y, t;
    scanf("%d%d", &n, &m);
    for(i=1;i<=n;++i)
    {
        scanf("%d", &x);
        update(i, x);
    }
    for(i=1;i<=m;++i)
    {
        scanf("%d%d%d", &t, &x, &y);
        if(t==0)
            scade(x,y);
        else
            printf("%d\n", query(y)-query(x-1));
    }
}
int main()
{
    freopen("datorii.in", "r", stdin);
    freopen("datorii.out", "w", stdout);
    rezolva_problema();
    return 0;
}