Pagini recente » Cod sursa (job #2861419) | Cod sursa (job #3033044) | Cod sursa (job #1203559) | Cod sursa (job #2107800) | Cod sursa (job #2536471)
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define int long long
using namespace std;
ll i,j,mod=1e9+7;
ll n,m;
ll tree[200005];
ll sum(ll k){
ll s=0;
while(k>=1){
s+=tree[k];
k-=k&-k;
}
return s;
}
void add(ll k,ll x){
while(k<=n){
tree[k]+=x;
k+=k&-k;
}
}
ll bin1(ll l,ll r,ll x){
if(r<l||r>n) return -1;
ll mid=l+(r-l)/2;
if((sum(mid)==x&&mid==1)||(sum(mid)==x&&sum(mid-1)!=x)) return mid;
else if(sum(mid)<x) bin1(mid+1,r,x);
else bin1(l,mid-1,x);
}
int32_t main() {
ifstream cin("aib.in");
ofstream cout("aib.in");
cin>>n;
cin>>m;
for(i=1;i<=n;i++){
ll x;
cin>>x;
add(i,x);
}
for(i=1;i<=m;i++){
ll tip;
cin>>tip;
if(tip==0){
ll a,b;
cin>>a>>b;
add(a,b);
}
else if(tip==1){
ll a,b;
cin>>a>>b;
if(a==1) cout<<sum(b)<<"\n";
else cout<<sum(b)-sum(a-1)<<"\n";
}
else{
ll a;
cin>>a;
cout<<bin1(1,n,a)<<"\n";
}
}
//for(i=1;i<=n;i++) cout<<tree[i]<<" ";
}