Pagini recente » Cod sursa (job #1952150) | Cod sursa (job #2441278) | Cod sursa (job #1568228) | Cod sursa (job #2169864) | Cod sursa (job #3271133)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
struct AIB {
vector<int> aib;
int n;
AIB() {
}
AIB(int size) {
n = size + 1;
aib.resize(n);
}
void add(int x, int i) {
while (i < n) {
aib[i] += x;
i += i & -i;
}
}
int querry(int i) {
int sum = 0;
while (i > 0) {
sum += aib[i];
i -= i & -i;
}
return sum;
}
int rangeSum(int i1,int i2) {
return querry(i2) - querry(i1-1);
}
};
AIB aib;
int main() {
int n,m;
cin>>n>>m;
aib = AIB(n);
for (int i=1; i<=n; i++) {
int x;
cin>>x;
aib.add(x,i);
}
for (int i=0; i<m; i++) {
int c,a,b;
cin>>c>>a>>b;
if (c == 0) {
aib.add(-b,a);
}
else {
cout<<aib.rangeSum(a,b)<<"\n";
}
}
}