Pagini recente » Cod sursa (job #1260834) | Cod sursa (job #2621187) | Cod sursa (job #1442741) | Cod sursa (job #1256507) | Cod sursa (job #2582158)
#include<cstdio>
const int NMAX = 15000;
int aib[NMAX + 5];
int sp[NMAX + 5];
int maxval;
int lsb(int nr)
{
return (nr & (-nr));
}
void update(int index , int val)
{
while(index <= maxval)
{
aib[index] += val;
index += lsb(index);
}
}
int query(int index)
{
int total = 0;
while(index)
{
total += aib[index];
index -= lsb(index);
}
return total;
}
int main()
{
int n , m , nr;
freopen("datorii.in" , "r" , stdin);
freopen("datorii.out" , "w" , stdout);
scanf("%d%d", &n , &m);
maxval = n + 1;
for(int i = 1; i <= n ; i ++){
scanf("%d" , &nr);
sp[i] = sp[i - 1] + nr;
}
for(int i = 1; i <= m ; i ++)
{
int tip , a , b;
scanf("%d%d%d" , &tip , &a , &b);
if(tip == 0)
{
update(a , b);
}
else
{
printf("%d\n" , sp[b] - sp[a - 1] - (query(b) - query(a - 1)));
}
}
return 0;
}