Pagini recente » Cod sursa (job #1922361) | Cod sursa (job #240329) | Cod sursa (job #349208) | Cod sursa (job #1464453) | Cod sursa (job #389133)
Cod sursa(job #389133)
#include <stdio.h>
int n=0,m=0;
int tree[100001];
int read(int idx){
int sum=0;
while (idx>0){
sum+=tree[idx];
idx-=(idx & -idx);
}
return sum;
}
void update(int idx,int val){
while(idx<=n){
tree[idx]+=val;
idx+= (idx & -idx);
}
}
int elso(int a){
int i=1;
bool jo=false;
while((!jo)&&(i<=n)){
if (read(i)==a){jo=true;}else{i++;}
}
if (jo) {return i;}else {return -1;}
}
int main(void){
freopen("aib.in","r",stdin);
freopen("aib.out","w",stdout);
tree[0]=0;
int i=0,temp,a,b;
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++){
scanf("%d",&temp);
update(i,temp);
}
for(i=1;i<=m;i++){
scanf("%d",&temp);
switch(temp){
case 0:
scanf("%d %d",&a,&b);
update(a,b);
break;
case 1:
scanf("%d %d",&a,&b);
printf("%d\n",read(b)-read(a-1));
break;
case 2:
scanf("%d",&a);
printf("%d\n",elso(a));
break;
}
}
return 0;
}