Pagini recente » Cod sursa (job #2916334) | Cod sursa (job #2424036) | Cod sursa (job #1033511) | Cod sursa (job #814776) | Cod sursa (job #386305)
Cod sursa(job #386305)
#include<iostream>
#include<string>
using namespace std;
#define NM 15005
#define FOR(i,a,b)for(int i=(a);i<=(b);++i)
#define lsb(x)(((x)^(x-1))&(x))
int AIB[NM],N,M;
inline void update(int poz,int val)
{
while(poz<=N)
{
AIB[poz]+=val;
poz+=lsb(poz);
}
}
inline int query(int poz)
{
int ans=0;
while(poz)
{
ans+=AIB[poz];
poz-=lsb(poz);
}
return ans;
}
int main()
{
int val,op,a,b;
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d %d",&N,&M);
FOR(i,1,N)
{
scanf("%d",&val);
update(i,val);
}
FOR(i,1,M)
{
scanf("%d %d %d",&op,&a,&b);
if(op) printf("%d\n",query(b)-query(a-1));
else update(a,-b);
}
return 0;
}