Pagini recente » Cod sursa (job #256085) | Cod sursa (job #2034088) | Cod sursa (job #1972498) | Cod sursa (job #1599312) | Cod sursa (job #1436816)
#include<cstdio>
long long aib[15001];
long long n;
long long put2(long long numar)
{
return numar xor (numar&(numar-1));
}
void adauga(long long poz,long long elem)
{
if(put2(poz)==0)
aib[poz]+=elem,poz++;
while(poz<=n)
{
aib[poz]+=elem;
poz+=(put2(poz));
}
}
// Suma(1,poz)
long long suma(long long poz)
{
long long 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);
long long m;
scanf("%lld %lld ",&n,&m);
for(long long i=1;i<=n;i++)
{
long long val;
scanf("%lld ",&val);
adauga(i,val);
}
for(long long i=1;i<=m;i++)
{
bool tip;
long long x,y;
scanf("%lld %lld %lld ",&tip,&x,&y);
switch(tip)
{
case 0:
{
adauga(x,-y);
break;
};
case 1:
{
printf("%lld\n",suma(y)-suma(x-1));
break;
};
}
}
fclose(stdin);
fclose(stdout);
return 0;
}