Pagini recente » Cod sursa (job #829311) | Cod sursa (job #807637) | Cod sursa (job #2322862) | Cod sursa (job #3332077) | Cod sursa (job #3311752)
#include <fstream>
#include <vector>
std::ifstream cin("datorii.in");
std::ofstream cout("datorii.out");
struct AIB {
std::vector<int> v;
size_t n;
AIB() = default;
AIB(size_t n) {
this->n = n;
v.resize(n+2);
}
void add(int x,int i) {
while (i<=n) {
v[i] += x;
i += i & -i;
}
}
int sum(int i) {
int rez = 0;
while (i>0) {
rez += v[i];
i -= i & -i;
}
return rez;
}
};
int v[15005];
int main() {
int n,m;
cin>>n>>m;
AIB aib = AIB(n);
for (int i=1; i<=n; i++) {
int x;
cin>>x;
aib.add(x,i);
}
for (int i=1; i<=m; i++) {
int c,a,b;
cin>>c>>a>>b;
if (c == 0) {
aib.add(-b,a);
}
else {
std::cout<<aib.sum(b) - aib.sum(a-1)<<"\n";
}
}
}