Pagini recente » Cod sursa (job #1437963) | Cod sursa (job #245055) | Cod sursa (job #1636771) | Cod sursa (job #1885340) | Cod sursa (job #2414461)
#include <cstdio>
using namespace std;
const int NMAX = 100002;
int v[NMAX];
int aib[NMAX];
void update(int idx, int val){
for(;idx<NMAX;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 n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i){
scanf("%d",&v[i]);
update(i,v[i]);
}
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;
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;
}