Pagini recente » Cod sursa (job #287241) | Cod sursa (job #2686373) | Cod sursa (job #559187) | Cod sursa (job #2376038) | Cod sursa (job #3002150)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
#define zeros(x)((x^(x - 1))& x)
int v[1001], aib[10001], n, m;
void adaugare(int x, int cantitate) {
for (int i = x; i <= n; i += zeros(i)) {
aib[i] += cantitate;
}
}
int compute(int x) {
int ret = 0;
for (int i = x; i > 0; i -= zeros(i)) {
ret += aib[i];
}
return ret;
}
int main() {
fin >> n >> m;
for (int i = 1; i <= n; i++) {
fin >> v[i];
adaugare(i, v[i]);
}
for (int i = 1; i <= m; i++) {
int c, nr1, nr2;
fin >> c >> nr1 >> nr2;
if (c == 1) {
fout << compute(nr2) - compute(nr1 - 1)<<'\n';
}
else {
adaugare(nr1, -nr2);
}
}
return 0;
}