Pagini recente » Cod sursa (job #2152218) | Cod sursa (job #1041067) | Cod sursa (job #2145507) | Cod sursa (job #614210) | Cod sursa (job #2040873)
#include<fstream>
using namespace std;
ifstream fin("aib.in");
ofstream fout("aib.out");
int n,m,i,x,a,b,c,val,st,dr,mid;
int A[100005];
int query(int p){
int r=0;
for(;p;p-=(p&(-p))){
r+=A[p];
}
return r;
}
void update(int p,int x){
for(;p<=n;p+=(p&(-p))){
A[p]+=x;
}
}
int main(){
fin>>n>>m;
for(i=1;i<=n;i++){
fin>>x;
update(i,x);
}
for(i=1;i<=m;i++){
fin>>val>>a;
if(val==0){
fin>>b;
update(a,b);
continue;
}
if(val==1){
fin>>b;
fout<<query(b)-query(a-1)<<"\n";
continue;
}
st=1;
dr=n;
while(st<=dr){
mid=(st+dr)/2;
if(query(mid)>=a){
dr=mid-1;
}
else{
st=mid+1;
}
}
if(query(st)==a){
fout<<st<<"\n";
}
else{
fout<<"-1"<<"\n";
}
}
return 0;
}