Cod sursa(job #1635870)

Utilizator Bodo171Bogdan Pop Bodo171 Data 6 martie 2016 20:34:25
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <iostream>
#include<fstream>
using namespace std;
int zile[15005],n,m;
bool a;
ifstream f("datorii.in");
ofstream g("datorii.out");
inline int lbit(int x)
{
    return ((x^(x-1))&x);
}
void plateste(int i,int val)
{
    for(i;i<=n;i+=lbit(i))
       zile[i]+=val;

       return;
}
int cautasuma(int i)
{
    int sum=0;
    for(i;i>0;i-=lbit(i))
        sum+=zile[i];
        return sum;
}
int interogare(int i,int j)
{
    int sum1,sum2,sum3;
    sum1=cautasuma(i-1);
    sum2=cautasuma(j);
    sum3=sum2-sum1;
    return sum3;
}
int main()
{

    f>>n>>m;int suma,x,y;

    for(int contor=1;contor<=n;contor++)
    {
        f>>suma;
        plateste(contor,suma);
    }
    for(int contor=1;contor<=m;contor++)
    {
        f>>a;f>>x>>y;
        if(a==0)
        {
            y*=-1;

            plateste(x,y);
        }
        else
        {
            g<<interogare(x,y)<<'\n';
        }
    }


    return 0;
}