Pagini recente » Cod sursa (job #1791281) | Cod sursa (job #1740957) | Cod sursa (job #2748147) | Cod sursa (job #845421) | Cod sursa (job #3180112)
#include <fstream>
#include <vector>
using namespace std;
int pow2(int n) {
return (n & (-n));
}
void update(vector<int> &aib, int n, int p, int val) {
while(p <= n) {
aib[p] += val;
p += pow2(p);
}
}
long long query(vector<int> &aib, int p) {
long long res = 0;
while(p != 0) {
res += aib[p];
p -= pow2(p);
}
return res;
}
int main()
{
ifstream cin("datorii.in");
ofstream cout("datorii.out");
int n, m, val;
cin >> n >> m;
vector<int> aib(n + 1, 0);
for(int i = 1; i <= n; i++) {
cin >> val;
update(aib, n, i, val);
}
int c;
for(int i = 1; i <= m; i++) {
cin >> c;
if(c == 0) {
int zi, suma;
cin >> zi >> suma;
update(aib, n, zi, -suma);
} else {
int st, dr;
cin >> st >> dr;
cout << query(aib, dr) - query(aib, st-1) << "\n";
}
}
cin.close();
cout.close();
return 0;
}