Pagini recente » Cod sursa (job #2248901) | Cod sursa (job #2659807) | Cod sursa (job #512185) | Cod sursa (job #429008) | Cod sursa (job #606335)
Cod sursa(job #606335)
#include <stdio.h>
#define aibfunc(x) ((x^(x-1))& x)
using namespace std;
int n, m;
int aib[15001];
void update(int zi, int val)
{
for (int i = zi; i <= n; i+=aibfunc(i))
{
aib[i]+=val;
}
}
void query(int zi1, int zi2)
{
int sum1 = 0, sum2 = 0;
sum1 = 0;
for (int i = zi1 - 1; i > 0; i-=aibfunc(i))
{
sum1+=aib[i];
}
for (int i = zi2; i > 0; i-=aibfunc(i))
{
sum2+=aib[i];
}
printf("%d\n", (sum2-sum1));
}
int main()
{
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
scanf("%d%d", &n, &m);
int sec;
aib[0] = 0;
for (int i = 1; i <= n; ++i)
{
scanf("%d", &sec);
update(i, sec);
}
int b, c;
for (int i = 0; i < m; ++i)
{
scanf("%d%d%d", &sec, &b, &c);
switch(sec)
{
case(0): update(b, c * -1); break;
case(1): query(b,c); break;
}
}
return 0;
}