Pagini recente » Cod sursa (job #2812183) | Cod sursa (job #1608916) | Cod sursa (job #1470497) | Cod sursa (job #2395437) | Cod sursa (job #1976833)
#include <iostream>
#include <fstream>
#define zeros(x) ((x ^ (x - 1)) & x)
#define nmax 200001
using namespace std;
int AIB[nmax], n;
void add (int x, int quantity) {
for (int i = x; i <= n; i +=zeros(i))
AIB[i] += quantity;
}
int compute (int x) {
int i, ret = 0;
for (i = x; i > 0; i -= zeros(i))
ret += AIB[i];
return ret;
}
int suma_interval(int a, int b) {
return compute(b) - compute(a - 1);
}
int main()
{
ifstream f("datorii.in");
ofstream g("datorii.out");
int m, i, x, y, tip;
f >> n >> m;
for (i = 1; i <= n; ++i) {
f >> x;
add(i, x);
}
for (i = 1; i <= m; ++i) {
f >> tip >> x >> y;
if (!tip) add(x, -y);
else g << suma_interval(x, y) << "\n";
}
return 0;
}