Pagini recente » Cod sursa (job #1776281) | Cod sursa (job #30118) | Cod sursa (job #140197) | Cod sursa (job #2631449) | Cod sursa (job #1097948)
#include <cstdio>
#define LSB(x) ((-x)&x)
using namespace std;
int x,N,M,i,aib[100005],t,a,b;
void Update2(int V,int Pos)
{
int i;
for(i=Pos;i<=N;i=i+LSB(i))
aib[i]=aib[i]-V;
}
void Update1(int V,int Pos)
{
int i;
for(i=Pos;i<=N;i=i+LSB(i))
aib[i]=aib[i]+V;
}
int Suma(int Pos)
{
int i,s=0;
for(i=Pos; i>0; i-=LSB(i))
s=s+aib[i];
return s;
}
int query(int P1,int P2)
{
return (Suma(P2)-Suma(P1-1));
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d",&N,&M);
for( i = 1; i <= N; i++ )
{
scanf("%d",&x);
Update1(x,i);
}
while(M>0)
{
M--;
scanf("%d",&t);
if ( t==0 )
{
scanf("%d%d\n",&a,&b);
Update2( b, a );
}
else
if (t==1)
{
scanf("%d%d\n",&a,&b);
printf("%d\n",query(a,b));
}
}
return 0;
}