Pagini recente » Cod sursa (job #1772004) | Cod sursa (job #1694417) | Cod sursa (job #942528) | Cod sursa (job #455467) | Cod sursa (job #2980945)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("aib.in") ;
ofstream fout("aib.out") ;
const int NM=100001 ;
int aib[NM],n,m,x ;
long long sum ;
unordered_map <int,int> f ;
inline int next(int x){
return (x^(x-1))&x ;
}
void insert(int pos,int val)
{
for(int i=pos; i<=n; i+=next(i)) aib[i]+=val ;
}
int query(int pos)
{
int s=0 ;
for(int i=pos; i>0; i-=next(i)) s+=aib[i] ;
return s ;
}
int main()
{
fin>>n>>m ;
for(int i=1; i<=n; ++i) fin>>x,insert(i,x),sum+=x,f[sum]=i ;
for(int i=1,op,x,y; i<=m; ++i)
{
fin>>op ;
if(op==0) fin>>x>>y,insert(x,y) ;
if(op==1) fin>>x>>y,fout<<query(y)-query(x-1)<<'\n';
if(op==2)
{
fin>>x;
if(x>=sum) fout<<n<<'\n' ;
else fout<<f[x]<<'\n' ;
}
}
return 0;
}