Cod sursa(job #1001246)

Utilizator dobrebogdanDobre Bogdan Mihai dobrebogdan Data 24 septembrie 2013 19:29:06
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<stdio.h>
unsigned v[15005],s[15005];
int main()
{
    freopen("datorii.in","r",stdin);
    freopen("datorii.out","w",stdout);
    unsigned n,m,i,j,x,k,a,b,y,c,p;
    scanf("%u%u",&n,&m);
    for(i=1;i<=n;i++)
    {
        scanf("%u",&v[i]);
        p=i;
        while(p<=n)
        {
        s[p]=s[p]+v[i];
        p=p+(p & (-p));
        }
    }
    for(i=1;i<=m;i++)
    {
        scanf("%u%u%u\n",&c,&a,&b);
        if(c==0)
        {
             p=a;
        while(p<=n)
        {
        s[p]=s[p]-b;
        p=p+(p & (-p));
        }
        }
            else
            {
             j=b;
             y=0;
             while(j>0)
             {
                 y=y+s[j];
                j=j-(j & (-j));
             }
             j=a-1;
              while(j>0)
             {
                 y=y-s[j];
                j=j-(j & (-j));
             }
             printf("%u\n",y);
            }
    }
    return 0;
}