Cod sursa(job #2379218)

Utilizator albucristianAlbu Cristian-Gabriel albucristian Data 13 martie 2019 09:20:58
Problema Arbori indexati binar Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#include <fstream>
using namespace std;
long long arb[100002],v[100002];
int main()
{
    long long n,m,s,d,a,b,op,mij;
    ifstream in("aib.in");
    ofstream out("aib.out");
    in>>n>>m;
    for(int i=1;i<=n;i++)
    {
        in>>arb[i];
        v[i]=arb[i];
        v[i]+=v[i-1];
    }
    for(int i=1;i<=m;i++)
    {
        in>>op;
        if(op==0)
        {
            in>>a>>b;
            arb[a]+=b;
            for(int j=a;j<=n;j++)
                v[j]+=b;
        }
        if(op==1)
        {
            in>>a>>b;
            s=0;
            for(int j=a;j<=b;j++)
                s+=arb[j];
            out<<s<<"\n";
        }
        if(op==2)
        {
            in>>a;
            s=1;
            d=n;
            while(s<=d)
            {
                mij=(s+d)/2;
                if(v[mij]==a)
                {
                    out<<mij<<"\n";
                    break;
                }
                else
                {
                    if(a<v[mij])
                        d=mij-1;
                    else
                        s=mij+1;
                }
            }
        }
    }
    return 0;
}