Cod sursa(job #1139499)

Utilizator vlady1997Vlad Bucur vlady1997 Data 11 martie 2014 11:03:21
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
        #include <cstdio>
        #define zero(x) (x&(-x))
        using namespace std;
        int a[15001], s[15001], n;
        void update(int poz, int val)
        {
            for(int i=poz; i<=n; i+=zero(i)) s[i]+=val;
        }
        int query(int poz)
        {
            int i, r=0;
            for(i=poz; i>=1; i-=zero(i)) r+=s[i];
            return r;
        }
        int main()
        {
            int m, x, y, z, i, j;
            freopen("datorii.in","r",stdin);
            freopen("datorii.out","w",stdout);
            scanf("%d%d",&n,&m); s[0]=0;
            for (i=1; i<=n; i++) {scanf("%d",&a[i]); update(i,a[i]);}
            for (i=1; i<=m; i++)
            {
                scanf("%d%d%d",&z,&x,&y);
                if (z==0) update(x,-y);
                else printf("%d\n",query(y)-query(x-1));
            }
            fclose(stdin);
            fclose(stdout);
            return 0;
        }