Pagini recente » Cod sursa (job #1236902) | Cod sursa (job #538636) | Cod sursa (job #2846391) | Cod sursa (job #805381) | Cod sursa (job #2872616)
#include<iostream>
#include<fstream>
const int NMAX = 1.5e4 + 1;
#define lsb1(i) i += i&(-i)
#define lsb2(i) i -= i&(-i)
std::ifstream in("datorii.in");
std::ofstream out("datorii.out");
using namespace std;
int aib[NMAX], n, query;
void update(int index, int val) {
for (int i = index; i <= n; lsb1(i))
aib[i] += val;
}
int que(int ind) {
int suma = 0;
for (int i = ind; i >= 1; lsb2(i))
suma += aib[i];
return suma;
}
int main() {
in >> n >> query;
for (int i = 1; i <= n; i++) {
int x;
in >> x;
update(i, x);
}
for (int i = 0; i < query; i++) {
int task;
in >> task;
if (task == 1) {
int a, b;
in >> a >> b;
out << que(b) - que(a - 1) << '\n';
}
else {
int a, b;
in >> a >> b;
update(a, -b);
}
}
return 0;
}