Cod sursa(job #1249029)

Utilizator sirbu11Sirbu Claudiu Cosmin sirbu11 Data 26 octombrie 2014 13:19:28
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include<fstream>
#include<math.h>

using namespace std;

#define zeros(x) ( (x ^ (x - 1)) & x )
int c[15002];

int main()
{
    int nr,n,m,a[15002],i,st,dr,val,ind,s1,s2,cod,j;

    ifstream f("datorii.in");
    ofstream g("datorii.out");
    f>>n>>m;
    for(i=1;i<=n;i++)
    {
        f>>a[i];
        j=i;
        while(j<=n)
        {
            c[j]=c[j]+a[i];
            j=j+zeros(j);
        }
    }

    for(i=1;i<=m;i++)
    {
        f>>cod;
        if(cod==0)
        {
            f>>ind>>val;
            while(ind<=n)
            {
                c[ind]=c[ind]-val;
                ind=ind+zeros(ind);
            }
        }
        else
        {
            f>>st>>dr;
            s1=0;
            while(dr>0)
            {
                s1=s1+c[dr];
                dr=dr-zeros(dr);
            }
            st--;
            s2=0;
            while(st>0)
            {
                s2=s2+c[st];
                st=st-zeros(st);
            }
            g<<s1-s2<<endl;
        }
    }
    return 0;
}