Pagini recente » Cod sursa (job #460961) | Cod sursa (job #994213) | Cod sursa (job #2509473) | tema | Cod sursa (job #2672819)
/// REZOLVARE PRIN ARBORI INDEXATI BINAR
#include <fstream>
using namespace std;
#define p(x) (x & (-x))
const int nMax = 15000;
int n, q, vec[nMax + 5], aib[nMax + 5];
int query(int x)
{
int sum = 0;
for (int i = x; i >= 1; i -= p(i))
sum += aib[i];
return sum;
}
int main()
{
ifstream fin("datorii.in");
ofstream fout("datorii.out");
fin >> n >> q;
for (int i = 1; i <= n; ++i)
fin >> vec[i];
for (int i = 1; i <= n; ++i)
for (int j = i; j <= n; j += p(j))
aib[j] += vec[i];
for (int i = 1; i <= q; ++i)
{
int num, a, b;
fin >> num >> a >> b;
if (num == 0)
for (int j = a; j <= n; j += p(j))
aib[j] -= b;
else if (num == 1)
fout << query(b) - query(a - 1) << '\n';
}
}