Pagini recente » Cod sursa (job #65140) | Cod sursa (job #3032327) | Cod sursa (job #408779) | Cod sursa (job #1925338) | Cod sursa (job #1436825)
#include<cstdio>
int aib[150001];
int n;
int put2(int numar)
{
return numar xor (numar&(numar-1));
}
void adauga(int poz,int elem)
{
if(put2(poz)==0)
aib[poz]+=elem,poz++;
while(poz<=n)
{
aib[poz]+=elem;
poz+=(put2(poz));
}
}
// Suma(1,poz)
int suma(int poz)
{
int S=0;
while(poz>0)
{
S+=aib[poz];
poz-=(put2(poz));
}
return S;
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
int m;
scanf("%d %d ",&n,&m);
for(int i=1;i<=n;i++)
{
int val;
scanf("%d ",&val);
adauga(i,val);
}
for(int i=1;i<=m;i++)
{
bool tip;
int x,y;
scanf("%d %d %d ",&tip,&x,&y);
switch(tip)
{
case 0:
{
adauga(x,-y);
break;
};
case 1:
{
printf("%d\n",suma(y)-suma(x-1));
break;
};
}
}
fclose(stdin);
fclose(stdout);
return 0;
}