Pagini recente » Cod sursa (job #849579) | Cod sursa (job #2874924) | Cod sursa (job #1127271) | Cod sursa (job #597889) | Cod sursa (job #2886860)
#include <fstream>
using namespace std;
ifstream in ("datorii.in");
ofstream out ("datorii.out");
#define zeros(x)((x ^ (x - 1)) & x)
const int max_size = 15e3 + 1;
int a[max_size], aib[max_size], n;
void update (int x, int val)
{
for (int i = x; i <= n; i += zeros(i))
{
aib[i] += val;
}
}
int compute (int x)
{
int rez = 0;
for (int i = x; i > 0; i -= zeros(i))
{
rez += aib[i];
}
return rez;
}
int main ()
{
int t;
in >> n >> t;
for (int i = 1; i <= n; i++)
{
in >> a[i];
update(i, a[i]);
}
while (t--)
{
int op, x, y;
in >> op >> x >> y;
if (op == 1)
{
out << compute(y) - compute(x - 1) << '\n';
}
else
{
update(x, -y);
}
}
in.close();
out.close();
return 0;
}