Cod sursa(job #1255767)

Utilizator roxana.aeleneiAelenei Roxana roxana.aelenei Data 5 noiembrie 2014 08:55:16
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream>
using namespace std;
int aib [15001];
inline int lsb (int x)
{
    return x&(x-1)^x;
}
void update (int n, int poz, int val)
{
    for( ; poz<=n; poz+=lsb(poz))
    aib[poz]+=val;
}
int query (int b)
{
    int s=0;
    for(; b; b-=lsb(b))
        s+=aib[b];
    return s;
}
int main()
{
    ifstream in("datorii.in");
    ofstream out("datorii.out");
    int n,m,i,x,op,a,b;
    in>>n>>m;
    for(i=1;i<=n;i++)
    {
        in>>x;
        update(n,i,x);
    }
    for(i=1;i<=m;i++)
    {
        in>>op>>a>>b;
        if(!op)
            update(n,a,-b);
        else out<<query(b)-query(a-1)<<"\n";
    }
    return 0;
}