Pagini recente » Profil Bodi | Diferente pentru echipa-infoarena intre reviziile 57 si 56 | Profil Patrunjelu | Monitorul de evaluare | Cod sursa (job #1179969)
#include <cstdio>
#define ub(x) (x&(-x))
#define NMAX 15001
using namespace std;
int A[NMAX];
int i,N,M,test,x,y;
void add(int x,int val)
{
int i=0;
for(i=x;i<=N;i+=ub(i)) A[i]+=val;
}
int Sum(int x)
{
int i=0,S=0;
for (i=x;i>=1;i-=ub(i)) S+=A[i];
return S;
}
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);
add(i,x);
}
for (i=1;i<=M;++i)
{
scanf("%d%d%d",&test,&x,&y);
switch(test)
{
case 0 : add(x,-y);
case 1 : printf("%d\n",Sum(y)-Sum(x-1));
}
}
return 0;
}