Pagini recente » Cod sursa (job #97250) | Cod sursa (job #1091519) | Cod sursa (job #1248096) | Cod sursa (job #2080325) | Cod sursa (job #781288)
Cod sursa(job #781288)
#include <fstream>
const unsigned int MAX_SIZE(15001);
int bit [MAX_SIZE], n, m;
inline int lsb (int x)
{
return x & -x;
}
inline int bit_sum (int x)
{
int sum(0);
while (x)
{
sum += bit[x];
x -= lsb(x);
}
return sum;
}
void update (int x, int val)
{
while (x <= n)
{
bit[x] += val;
x += lsb(x);
}
}
int main()
{
std::ifstream input("datorii.in");
int x, y;
char q;
input >> n >> m;
for (int i(1) ; i <= n ; ++i)
{
input >> x;
update(i,x);
}
std::ofstream output("datorii.out");
while (m--)
{
input >> q >> x >> y;
if (q == '0')
update(x,-y);
else
output << bit_sum(y) - bit_sum(x - 1) << '\n';
}
input.close();
output.close();
return 0;
}