Cod sursa(job #3169693)

Utilizator DavidC06Constantinescu David DavidC06 Data 15 noiembrie 2023 19:36:54
Problema Arbori indexati binar Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#include <vector>

using namespace std;
ifstream cin("aib.in");
ofstream cout("aib.out");

int n,m,x,c,a,b;
vector<int> A;

int zeros(int n)
{
    return n & (-n);
}

void adun(int nod, int y)
{
    for(int i=nod; i<=n;i=i+zeros(i))
    {
        A[i]=A[i]+y;
    }
}

int suma(int nod)
{
    int s=0;
    for(int i=nod;i>=1;i=i-zeros(i))
      s=s+A[i];
    return s;
}

int main()
{
    cin>>n>>m;
    A.resize(n+1);
    for(int i=1;i<=n;i++)
    {
     cin>>x;
     adun(i,x);
    }

    for(int i=0;i<m;i++)
    {
       cin>>c;
       switch(c)
       {
           case 0:
           {
               cin>>a>>b;
               adun(a,b);
               break;
           }
           case 1:
           {
               cin>>a>>b;
               int s1=suma(a-1);
               int s2=suma(b);
               cout<<s2-s1<<'\n';
               break;
           }
       }
    }
    return 0;
}