Pagini recente » Cod sursa (job #1440511) | Cod sursa (job #231133) | Cod sursa (job #934261) | Cod sursa (job #973569) | Cod sursa (job #46147)
Cod sursa(job #46147)
#include<cstdio>
using namespace std;
long long h[15001],n,m;
void nbit(long long,long long&);
long long sum2(long long);
long long sum(long long,long long);
void mod(long long,long long);
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%lld%lld",&n,&m);
long long opt,i,j,k;
for(i=1;i<=n;i++)
{
scanf("%lld",&j);
if(j) mod(i,j);
}
for(k=0;k<m;k++)
{
scanf("%lld%lld%lld",&opt,&i,&j);
if(!opt) mod(i,-j);
else printf("%lld\n",sum(i,j));
}
return 0;
}
long long sum2(long long x)
{
long long s=0,t=1;
while(x)
{
s+=h[x];
while(!(x&t)) t<<=1;
x-=t;
t<<=1;
}
return s;
}
long long sum(long long a,long long b)
{
return sum2(b)-sum2(a-1);
}
void mod(long long x,long long val)
{
long long t=1;
while(x<=n)
{
h[x]+=val;
while(!(x&t)) t<<=1;
x+=t;
t<<=1;
}
}