Pagini recente » Cod sursa (job #2936684) | Cod sursa (job #2933273) | Cod sursa (job #2357722) | Cod sursa (job #2154125) | Cod sursa (job #2343169)
#include <bits/stdc++.h>
#define lastBit(x) (x & (-x))
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
const int MAX = 15005;
int n, m;
int tree[MAX];
int Sum(int a)
{
int sum = 0;
for(; a; a -= lastBit(a))
sum += tree[a];
return sum;
}
int Sum(int a, int b)
{
return Sum(b) - (a == 1 ? 0 : Sum(a - 1));
}
void Update(int idx, int value)
{
for(; idx <= n; idx += lastBit(idx))
tree[idx] += value;
}
int main()
{
f >> n >> m;
int x;
for(int i = 1; i <= n; ++i)
{
f >> x;
Update(i, x);
}
int op, a, b;
while(m--)
{
f >> op >> a >> b;
switch(op)
{
case 0: Update(a, -b); break;
case 1: g << Sum(a, b) << "\n"; break;
}
}
return 0;
}