Pagini recente » Cod sursa (job #1884609) | Cod sursa (job #2311219) | Cod sursa (job #2319747) | Cod sursa (job #1495928) | Cod sursa (job #2414472)
#include <cstdio>
using namespace std;
const int NMAX = 100002;
int aib[NMAX];
int n;
void update(int idx, int val){
for(;idx<=n;idx+=idx&-idx)
aib[idx]+=val;
}
int query(int idx){
int ans=0;
for(;idx;idx-=idx&-idx)
ans+=aib[idx];
return ans;
}
int main(){
freopen("aib.in","r",stdin);
freopen("aib.out","w",stdout);
int m,x;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i){
scanf("%d",&x);
update(i,x);
}
int caz,a,b;
for(;m;m--){
scanf("%d%d",&caz,&a);
if(caz==2){
int i;
for(i=1;i<=n;++i)
if(query(i)==a)
break;
if(i==n+1)
i=-1;
printf("%d\n",i);
}else{
scanf("%d",&b);
if(caz==0)
update(a,b);
if(caz==1)
printf("%d\n",query(b)-query(a-1));
}
}
return 0;
}