Pagini recente » Cod sursa (job #3248842) | Cod sursa (job #1520534) | Cod sursa (job #1298175) | Cod sursa (job #1308386) | Cod sursa (job #1234638)
#include<fstream>
using namespace std;
int n, m, op, i, i2, p, x, val, u, mij, a[100007];
void update(int p, int x){
for(i2=p; i2<=n; i2+=(i2&(-i2)))
a[i2]+=x;
}
int query(int p){
int s=0;
for(i2=p; i2>0; i2-=(i2&(-i2)))
s+=a[i2];
return s;
}
ifstream in("aib.in");
ofstream out("aib.out");
int main(){
in>>n>>m;
for(i=1; i<=n; i++){
in>>x;
update(i, x);
}
for(; m--;){
in>>op;
if(op==0){
in>>p>>x;
update(p, x);
}
if(op==1){
in>>p>>u;
out<<query(u)-query(p-1)<<"\n";
}
if(op==2){
in>>val;
p=1; u=n;
while(p<=u){
mij=p+(u-p)/2;
if(query(mij)>=val)
u=mij-1;
else
p=mij+1;
}
if(query(p)==val)
out<<p<<"\n";
else
out<<"-1"<<"\n";
}
}
return 0;
}