Pagini recente » Cod sursa (job #2774330) | Cod sursa (job #1977015) | Cod sursa (job #2137824) | Cod sursa (job #2942939) | Cod sursa (job #1146634)
#include <fstream>
#define NMAX 15005
#define MMAX 100005
#define FOR(a,b,i) for(int (i)=(a);(i)<(b);++(i))
using namespace std;
FILE* f=freopen("datorii.in","r",stdin);
FILE* o=freopen("datorii.out","w",stdout);
int n,m;
int dat[NMAX];
inline int LowestBit(int p) { return ((p^(p-1))&p); }
void Update(int pos, int val)
{
while(pos<=n)
{
dat[pos]+=val;
pos+=LowestBit(pos);
}
}
int GetSum(int p)
{
int sum=0;
while(p>=1)
{
sum+=dat[p];
p-=LowestBit(p);
}
return sum;
}
int Query(int l, int r)
{
int sum=0;
sum=GetSum(r)-GetSum(l-1);
return sum;
}
int main()
{
scanf("%d%d",&n,&m);
FOR(1,n+1,i)
{
int x;
scanf("%d",&x);
Update(i,x);
}
FOR(1,m+1,i)
{
int p;
int a,b;
scanf("%d",&p);
scanf("%d%d",&a,&b);
if(!p)
{
Update(a,-b);
}
else
{
printf("%d\n",Query(a,b));
}
}
return 0;
}