Pagini recente » Cod sursa (job #3276934) | Cod sursa (job #2368850) | Cod sursa (job #922771) | Cod sursa (job #1305467) | Cod sursa (job #1507352)
#include <fstream>
#include <array>
#define MX 15001
std::fstream in("datorii.in", std::fstream::in), out("datorii.out", std::fstream::out);
int n, m, sw, a, b;
std::array<int, MX> aib;
inline int zeros(int x)
{
return (-x) & x;
}
void update(int poz, int val)
{
for (int i = poz; i <= n; i += zeros(i)) aib[i] += val;
}
int sum(int poz)
{
int s = 0;
for (; poz; poz -= zeros(poz)) s += aib[poz];
return s;
}
int main()
{
in >> n >> m;
for (sw = 1; sw <= n; ++sw)
{
in >> a;
update(sw, a);
}
for (; m; --m)
{
in >> sw >> a >> b;
switch (sw)
{
case 0:
update(a, -b);
break;
case 1:
out << sum(b) - sum(a - 1) << "\n";
break;
}
}
return 0;
}