Pagini recente » Cod sursa (job #3265330) | Cod sursa (job #6959) | Cod sursa (job #907254) | Cod sursa (job #938176) | Cod sursa (job #1259661)
#include<cstdio>
#define LSB(x) (x&(-x))
int i,n,m,poz1,poz2,a[100005],q,poz,val,ii,j,x;
void update(int poz, int val)
{
for(i=poz;i<=n;i+=LSB(i))
{
a[i]+=val;
}
}
int query(int poz)
{
int s=0;
for(i=poz;i>=1;i-=LSB(i))
{
s+=a[i];
}
return s;
}
int main()
{
freopen("aib.in","r",stdin);
freopen("aib.out","w",stdout);
scanf("%d%d",&n,&m);
for(ii=1;ii<=n;ii++)
{
scanf("%d",&x);
update(ii,x);
}
for(ii=1;ii<=m;ii++)
{
scanf("%d%d",&q,&poz);
if(q==0)
{
scanf("%d",&val);
update(poz,val);
}
else if(q==1)
{
scanf("%d",&poz2);
printf("%d\n",query(poz2)-query(poz-1));
}
else
{
for(j=1;j<=n;j+=LSB(j))
{
if(query(j)==poz)
{
printf("%d\n",j);
break;
}
}
}
}
return 0;
}