Cod sursa(job #3218480)

Utilizator Victor5539Tanase Victor Victor5539 Data 27 martie 2024 11:53:53
Problema Arbori indexati binar Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.2 kb
#include <fstream>

using namespace std;
ifstream fin("aib.in");
ofstream fout("aib.out");




int n,m,i,v[100005],o,a,b,st,dr,mij;
void update(int p,int val)
{
  for ( int i=p; i<=n; i+=(i&(-i)) )
        v[i]+=val;
}

int query(int p)
{
    int sum=0;
    for (int i=p; i>=1; i-=(i&(-i)))
        sum+=v[i];

    return sum;
}
int main()
{
    ios_base::sync_with_stdio(false);
    fin.tie(0);
    fin>>n>>m;
    for (i=1; i<=n; i++)
        fin>>v[i];

    for (i=1; i<=m; i++)
    {
        fin>>o;
        fout<<o<<" ";
        if (o==0)
        {
            fin>>a>>b;
            update(a,b);
        }
        if (o==1)
        {
            fin>>a>>b;
            fout<<query(b)-query(a-1)<<"\n";
        }
        if (o==2)
        {
            fin>>a;
            st=1; dr=n;
            while (st<=dr)
            {
                mij=(st+dr)/2;
                if (a>v[mij])
                    st=mij+1;
                if (a<v[mij])
                    dr=mij-1;
                if (a==v[mij])
                {
                    fout<<mij<<"\n";
                    break;
                }
            }
        }
    }



    return 0;
}