Pagini recente » Cod sursa (job #2459874) | Cod sursa (job #963306) | Cod sursa (job #2826241) | Cod sursa (job #1096572) | Cod sursa (job #2415035)
#include <bits/stdc++.h>
#define Nmax 15000
#define lsb(x) (x&(-x))
using namespace std;
ifstream fin ("datorii.in");
ofstream fout ("datorii.out");
int N, Q;
int AIB[Nmax + 5];
inline int query (int poz);
inline void update (int poz, int val);
int main()
{
fin >> N >> Q;
for (int i = 1; i <= N; ++i)
{
int x;
fin >> x;
update (i, x);
}
while (Q--)
{
int TASK;
fin >> TASK;
if (TASK)
{
int left, right;
fin >> left >> right;
fout << query (right) - query (left - 1) << "\n";
}
else
{
int val, poz;
fin >> poz >> val;
update (poz, -val);
}
}
return 0;
}
inline void update (int poz, int val)
{
while (poz <= N)
{
AIB[poz] += val;
poz += lsb (poz);
}
}
inline int query (int poz)
{
int sum = 0;
while (poz)
{
sum += AIB[poz];
poz -= lsb (poz);
}
return sum;
}