Cod sursa(job #1846893)

Utilizator asavu16Andrei Savu asavu16 Data 14 ianuarie 2017 09:21:20
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>

using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int x,cant,i,j,p,q,t,v,c,aib[100004],n,m,a;
#define zeros(x) ( (x ^ (x - 1)) & x )
void add(int x, int cant)
{
    int i;

    for (i=x; i<=n; i+=zeros(i))
        aib[i] += cant;
}
int suma(int x)
{
    int i, ret = 0;

    for (i=x; i>0; i-=zeros(i))
        ret+=aib[i];
    return ret;
}
int main()
{
    f>>n>>m;
    for(i=1;i<=n;++i)
    {
        f>>a;
        add(i,a);
    }
    for(j=1;j<=m;++j)
    {
        f>>c;
        if(c==0)
        {
            f>>t>>v;
           add(t,-v);
        }
        if(c==1)
        {
            f>>p>>q;
            g<<suma(q)-suma(p-1)<<'\n';
        }

    }
    return 0;
}