Pagini recente » Cod sursa (job #794752) | Cod sursa (job #705343) | Cod sursa (job #1827106) | Cod sursa (job #1896704) | Cod sursa (job #3125801)
#include <fstream>
using namespace std;
#define lung(x) ( (x^(x- 1)) & x )
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int N, M, aib[15010];
void update(int poz, int val)
{
for (int i = poz; i <= N + 1; i += lung(i))
aib[i] += val;
}
int query(int poz) {
int s = 0;
for (int i = poz; i >= 1; i -= lung(i))
s += aib[i];
return s;
}
void operatie0(int poz, int val) {
for (int i = poz; i <= N; i += lung(i))
aib[i] -= val;
}
void operatie1(int P, int Q) {
fout << query(Q) - query(P - 1) << '\n';
}
int main() {
fin >> N >> M;
for (int i = 1; i <= N; i++) {
int x;
fin >> x;
update(i, x);
}
for (int i = 1; i <= M; i++) {
int q;
fin >> q;
if (q == 0) {
int T, V;
fin >> T >> V;
operatie0(T, V);
}
else if (q == 1) {
int P, Q;
fin >> P >> Q;
operatie1(P, Q);
}
};
fin.close();
fout.close();
return 0;
}