Cod sursa(job #516295)

Utilizator R.A.RFMI Romila Remus Arthur R.A.R Data 23 decembrie 2010 17:55:44
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <fstream>
#define zeros(x) (((x)^(x-1))&x)
#define nmax 15002

using namespace std;

ifstream in("datorii.in");
ofstream out("datorii.out");

int N,M,AIB[nmax];


inline void adauga(int x,int val)
{
    for(;x<=N;x+=zeros(x))
        AIB[x]+=val;
}
inline int query(int x)
{
    int v=0;
    for(;x>0;x-=zeros(x))
        v+=AIB[x];
    return v;
}

int main()
{
    int i,p,c;
    in>>N>>M;
    for(i=1;i<=N;i++)in>>c,adauga(i,c);
    while(M--)
    {
        in>>i>>p>>c;
        if(i)
            out<<query(c)-query(p-1)<<'\n';
        else adauga(p,-c);
    }
    return 0;
}