Cod sursa(job #3315391)

Utilizator popescu_georgePopescu George popescu_george Data 14 octombrie 2025 08:32:40
Problema Arbori indexati binar Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include<fstream>
using namespace std;
ifstream cin("aib.in");
ofstream cout("aib.out");
int c[100001];
int main()
{
    int l=1,m,n;
    cin>>n>>m;
    for(int i=1;i<=n;++i) {
        int k;
        cin>>k;
        for(int j=i;j<=n;c[j]+=k,j+=j&-j);
    }
    for(;l<=n;l<<=1);
    for(;m--;) {
        int b,j,k;
        if(cin>>b>>j,b==2) {
            int i=0;
            for(int k=l;k;k>>=1)
                if(i+k<=n&&j>=c[i+k])
                    j-=c[i+k],i+=k;
            cout<<(j||!i?-1:i)<<'\n';
        } else if(cin>>k,!b)
            for(;j<=n;c[j]+=k,j+=j&-j);
        else {
            int s=0,t=0;
            for(;k;s+=c[k],k-=k&-k);
            for(--j;j;t+=c[j],j-=j&-j);
            cout<<s-t<<'\n';
        }
    }
    return 0;
}