Cod sursa(job #3343365)

Utilizator iustin.dumiDumitrescu Iustin iustin.dumi Data 27 februarie 2026 10:36:46
Problema Arbori indexati binar Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("aib.in");
ofstream fout("aib.out");
int i,n,sol,a[100005],p=1,aib[100005],m,op,x,y,st,dr,c,poz,s;
void add(int x, int val)
{
    for(int i=x;i<=n;i+=(i&(-i)))
        aib[i]+=val;
}
int sum(int x)
{
    int sum=0;
    for(int i=x;i>0;i-=(i&(-i)))
        sum+=aib[i];
    return sum;
}
int main()
{  fin>>n>>m;
   for(i=1;i<=n;i++)
   {
       fin>>a[i];
       add(i,a[i]);
   }
   for(i=1;i<=m;i++)
   {
       fin>>op;
       if(op==0)
       {
           fin>>x>>y;
           add(x,y);
       }
       else
       if(op==1)
       {
           fin>>x>>y;
           fout<<sum(y)-sum(x-1)<<'\n';
       }
       else
       {
           fin>>x;
           st=1;
           dr=n;
           while(st<=dr)
           {
               c=(st+dr)/2;
               s=sum(c);
               if(s>x)
                  dr=c-1;
               else
               if(s<x)
                  st=c+1;
               else
               {
                   poz=c;
                   dr=c-1;
               }
           }
           fout<<poz<<'\n';
       }
   }
    return 0;
}