Cod sursa(job #2383312)

Utilizator Leonard123Mirt Leonard Leonard123 Data 19 martie 2019 12:33:43
Problema Arbori indexati binar Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
using namespace std;
#define maxn 100001
ifstream cin("aib.in");
ofstream cout("aib.out");
int N,M,s[maxn],op;

void read(int N){
    s[0]=0;
    for(int i=1; i<=N; i++){
        cin>>s[i];
        s[i]+=s[i-1];
    }
}

void solve(int op){
    int x,y;
    if(op==0){
        cin>>x>>y;
        for(;x<=N; x++)
            s[x]+=y;
    } else if(op==1){
        cin>>x>>y;
        cout<<s[y]-s[x-1]<<'\n';
    }else if(op==2){
        cin>>x;
       int st=1,dr=N,mij=dr+st/2,ok=0;
       while(!dr<st){
        mij=(dr+st)/2;
        if(s[mij]==x){
            ok=1;
            break;
        }else if(x>s[mij]){
            st=mij+1;
        }else dr=mij-1;
       }
    if(ok==1)
        cout<<mij<<'\n';
    }
}

int main()
{
    cin>>N>>M;
    read(N);
    for(;M;M--){
        cin>>op;
        solve(op);
    }

}