Cod sursa(job #1258338)

Utilizator ccygnusMaygnus Pop ccygnus Data 8 noiembrie 2014 19:11:20
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<cstdio>
int n,m,aib[15005];
#define p(x) ((x)&(-x))
inline void update(int x,int val)
{
    int i;
    for(i=x;i<=n;i=i+p(i))
        aib[i]=aib[i]+val;
}
int query(int x)
{
    int ans=0;
    for(;x;x=x-p(x))
        ans=ans+aib[x];
    return ans;
}
int main()
{
    freopen("datorii.in","r",stdin);
    freopen("datorii.out","w",stdout);
    int x,y,care,i;
    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",&care,&x,&y);
        if (care==0)
            update(x,-y);
        else
            printf("%d\n",query(y)-query(x-1));
        }
return 0;
}