Cod sursa(job #1398536)

Utilizator alevasluialeHuhurez Marius alevasluiale Data 24 martie 2015 11:49:33
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>
#define bit(x) (x&(-x))
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
const int N=100001;
int v[N],n;
inline void adauga(int pos,int val)
{
    for(;pos<=n;pos+=bit(pos))
    {
        v[pos]+=val;
    }
}
int suma(int pos)
{
    int suma=0;
    for(;pos>=1;pos-=bit(pos)) suma+=v[pos];
    return suma;
}
int main()
{
    int m,i,ok,a,b;
    fin>>n>>m;
    for(i=1;i<=n;i++)
    {
        fin>>ok;
        adauga(i,ok);
    }
    for(i=1;i<=m;i++)
    {
        fin>>ok;
        fin>>a>>b;
        if(ok==0) adauga(a,-b);
        else fout<<suma(b)-suma(a-1)<<"\n";
    }
}