Pagini recente » Cod sursa (job #2299748) | Cod sursa (job #2383569) | Cod sursa (job #979058) | Cod sursa (job #269329) | Cod sursa (job #1423664)
#include <fstream>
using namespace std;
ifstream fin("aib.in");
ofstream fout("aib.out");
int n,v[100005];
void update(int p,int x){
for(;p<=n;p+=(p&-p)){
v[p]+=x;
}
}
int query(int p){
int s=0;
for(;p!=0;p-=(p&-p)){
s+=v[p];
}
return s;
}
int i,val,poz,a,b,p,u,k,op,mid;
int main(){
fin>>n>>k;
for(i=1;i<=n;i++){
fin>>val;
update(i,val);
}
for(;k;k--){
fin>>op;
if(op==0){
fin>>poz>>val;
update(poz,val);
}
if(op==1){
fin>>a>>b;
fout<<query(b)-query(a-1)<<"\n";
}
if(op==2){
fin>>a;
p=1;
u=n;
while(p<=u){
mid=(p+u)/2;
if(query(mid)==a){
fout<<mid<<"\n";
break;
}
if(query(mid)>a){
u=mid-1;
}else{
p=mid+1;
}
}
}
}
return 0;
}