Cod sursa(job #2221997)

Utilizator inquisitorAnders inquisitor Data 16 iulie 2018 12:03:56
Problema Arbori indexati binar Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#import<fstream>
int N,o,t,x,y,B['썐'],s,i,z;

int U(int p){for(;N/p;p+=p&-p)B[p]+=x;}

int Q(int p){for(s=0;p;p&=~-p)s+=B[p];return s;}

main(){std::ifstream f("aib.in");std::ofstream g("aib.out");

    for(f>>N>>o;N/++y;U(y))f>>x;

    for(;f>>t>>y;){s=o=1;

        for(x=y;N/s;s*=2);

        for(i=0;o*s;s/=2)
        {
            i+s>N|x-B[i+s]<0||(x-=B[i+=s])||(o=0);

            if(i+s<=N && x >= B[i+s])
            {
                x-=B[i+=s];

                if(x==0) o = 0;
            }
        }

        t<2&&f>>x;

        t?g<<(t&1?Q(x)-Q(y-1):o?-1:i)<<'\n',0:U(y);}}