Cod sursa(job #1017421)

Utilizator DaniEsDani Stetcu DaniEs Data 27 octombrie 2013 19:21:14
Problema Arbori indexati binar Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include fstream
#define NMax 100005
using namespace std;
ifstream fin(aib.in);
ofstream fout(aib.out);
int N,M,S[NMax];
void Update(int P,int V)
{
    for(int i=P;i=N;i+=i&(-i))
        S[i]+=V;
}
int Query(int P)
{
    int Sum=0;
    for(int i=P;i0;i-=i&(-i))
        Sum+=S[i];
    return Sum;
}
 int Search(int V)
{
    int Step;
    for (Step = 1; Step  N; Step = 1);
    for(int i = 0; Step; Step = 1) {
        if (i+Step = N && V = S[i+Step]) {
            i += Step, V -= S[i];
            if (!V)
                return i;
        }
    }
    return -1;
}
int main()
{
    finNM;
    for(int i=1;i=N;i++)
        {
            int X;
            finX;
            Update(i,X);
 
        }
    while(M--)
    {
        int op,a,b;
        finopa;
        if(op!=2)
            finb;
        if(op==0)
        {
            Update(a,b);
        }
        if(op==1)
        {
            foutQuery(b)-Query(a-1)n;
        }
        if(op==2)
        {
            foutSearch(a)n;
        }
    }
    return 0;
}