Pagini recente » Cod sursa (job #2287203) | Cod sursa (job #36137) | Cod sursa (job #1578867) | Cod sursa (job #1470935) | Cod sursa (job #3132390)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n, m;
vector<int> valori;
vector<int> prefixSuma;
void Update(int poz, int val) {
valori[poz] += val;
for (int i = poz; i <= n; i += i & -i) {
prefixSuma[i] += val;
}
}
int getSuma(int poz) {
int suma = 0;
for (int i = poz; i > 0; i -= i & -i) {
suma += prefixSuma[i];
}
return suma;
}
int main() {
f >> n >> m;
valori.resize(n + 1);
prefixSuma.resize(n + 1);
for (int i = 1; i <= n; i++) {
int x;
f >> x;
Update(i, x);
}
for (int i = 1; i <= m; i++) {
int t;
f >> t;
if (!t) {
int val, poz;
f >> poz >> val;
Update(poz, -val);
} else {
int p, q;
f >> p >> q;
g << getSuma(q) - getSuma(p - 1) << '\n';
}
}
return 0;
}