Pagini recente » Cod sursa (job #3364067) | Cod sursa (job #3364050) | Cod sursa (job #3364314) | Cod sursa (job #3364047) | Cod sursa (job #3364048)
#include <iostream>
#include <vector>
#include <fstream>
#define ll long long
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
vector<ll> aib;
vector<int> v;
int n, q;
void update(int i, int val) {
for (; i <= n; i+=(i & (-i))) {
aib[i] += val;
}
}
ll take(int i) {
ll sum = 0;
for (; i > 0; i-=(i & (-i))) {
sum += aib[i];
}
return sum;
}
int main() {
fin >> n >> q;
aib.resize(n + 2);
v.resize(n + 2);
for (int i = 1; i <= n; i++) {
fin >> v[i];
update(i, v[i]);
}
int tip;
int t, x;
while (q--) {
fin >> tip >> t >> x;
if (tip == 0) {
update(t, -x);
v[t] -= x;
} else {
fout << take(x) - take(t - 1) << '\n';
}
}
return 0;
}