Cod sursa(job #2872503)

Utilizator TeodoraMaria123Serban Teodora Maria TeodoraMaria123 Data 17 martie 2022 10:53:11
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
class aib
{
private:
    vector <int> v;
    int nsize;
    int lsb(int pos)
    {
        return pos&(-pos);
    }
public:
    aib(int n)
    {
        v.resize(n+1);
        nsize=n;
    }
    void update(int pos,int val)
    {
        while(pos<=nsize)
        {
            v[pos]+=val;
            pos+=lsb(pos);
        }
    }
    int query(int pos)
    {
        int sum=0;
        while(pos>=1)
        {
            sum+=v[pos];
            pos-=lsb(pos);
        }
        return sum;
    }
};
int main()
{
    int n,m;
    in>>n>>m;
    aib x(n);
    for(int i=1;i<=n;i++)
    {
        int a;
        in>>a;
        x.update(i,a);
    }
    for(int i=1;i<=m;i++)
    {
        int c,t,v;
        in>>c>>t>>v;
        if(c==0)
            x.update(t,-v);
        else
            out<<x.query(v)-x.query(t-1)<<"\n";
    }
    return 0;
}