Cod sursa(job #2557174)

Utilizator cristiemanuelstroe cristian emanuel cristiemanuel Data 25 februarie 2020 16:36:12
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include    <iostream>
#include    <fstream>
#define zeros(x) ((x^(x-1))&x)

using namespace std;

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

int v[15001],N,M,AIB[15001],x;

inline int Add(int poz, int val)
{
    for(int i=poz;i<=N;i+=zeros(i))
        AIB[i]+=val;
}

inline int Compute(int poz)
{
    int ret=0;
    for(int i=poz;i>0;i-=zeros(i))
        ret+=AIB[i];
    return ret;
}

int main()
{
    fin>>N>>M;
    for(int i=1;i<=N;i++){
        fin>>x;
        Add(i,x);
    }
    for(int i=1;i<=M;i++)
    {
        int nr,T,P;
        fin>>nr>>T>>P;
        if(!nr)
           Add(T,(-1)*P);
        else
          fout<<Compute(P)-Compute(T-1)<<'\n';

    }
}