Pagini recente » Cod sursa (job #1411569) | Cod sursa (job #1880552) | Cod sursa (job #836615) | Cod sursa (job #488586) | Cod sursa (job #2481483)
#include <cstdio>
#define zero(pos) ((pos^(pos-1))&pos)
using namespace std;
const int NMAX = 30005;
int n , q;
int aib[NMAX];
inline void add(int pos,int val)
{
for(int i = pos ; i <= n ; i += zero(i))
aib[i] += val;
}
inline void scade(int pos,int val)
{
for(int i = pos ; i <= n ; i += zero(i))
aib[i] -= val;
}
inline int sum(int pos)
{
int ans = 0;
int i = pos;
while(i > 0)
{
ans += aib[i];
i -= zero(i);
}
return ans;
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
int x;
scanf("%d%d",&n,&q);
for(int i = 1 ; i <= n ; i++)
{
scanf("%d",&x);
add(i,x);
}
while(q--)
{
int tip,a,b;
scanf("%d%d%d",&tip,&a,&b);
if(tip == 0)
scade(a,b);
else
printf("%d\n",sum(b)-sum(a-1));
}
return 0;
}