Cod sursa(job #2529525)

Utilizator denisaaabBucur Denisa Andreea denisaaab Data 23 ianuarie 2020 16:56:32
Problema Arbori indexati binar Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <iostream>
#include <fstream>
#define NMAX 100005
using namespace std;
ifstream f("aib.in");
ofstream g("aib.out");
int n,m,aib[NMAX];
void adaugare(int val,int poz)
{
    for(int i=poz;i<=n;i+=(i&(-i)))
        aib[i]=aib[i]+val;
}
int facsuma(int poz)
{
    long long sum=0;
    for(int i=poz;i>0;i-=(i&(-i)))
        sum=aib[i]+sum;
    return sum;
}
/*int cautare binara(int x)
{
    int st=1, dr=n;
    while(st<=dr)
    {
        int mij=(st+dr)/2;
        if(aib[mij]==x)
            return mij;
        if(aib[mij]<x)
            st=mij+1;
        else
            dr=mij;
    }
    return -1;
}
*/
void solve()
{
    f>>n>>m;
    int a,b,cerinta;
    for(int i=1;i<=n;i++)
    {   f>>a;
        adaugare(a,i);
    }
    for(int i=1;i<=m;i++)
    {
        f>>cerinta>>a;
        if(cerinta==0)
          {
              f>>b;
              adaugare(b,a);

          }
        else if(cerinta==1)
         {    f>>b;
             g<<facsuma(b)-facsuma(a-1)<<"\n";
         }
         else
         {
             g<<'\n';
         }
    }


}

int main()
{
    solve();
    return 0;
}