Pagini recente » Cod sursa (job #3308978) | Cod sursa (job #3311968) | Cod sursa (job #3313688) | Cod sursa (job #3321874) | Cod sursa (job #3304150)
#include <fstream>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
const int nmax = 15000;
int n, nrq, type, a, b;
int value;
inline int f(int x){ return (x & (-x)); }
struct fenwicktree{
int tree[nmax + 2];
void add(int pos, int val){
for(int i = pos; i <= n; i += f(i))
tree[i] += val;
}
int sum(int pos){
int s = 0;
for(int i = pos; i >= 1; i -= f(i))
s += tree[i];
return s;
}
} aib;
int main(){
in>>n>>nrq;
for(int i = 1; i <= n; i++){
in>>value;
aib.tree[i] += value;
if(i + f(i) <= n)
aib.tree[i + f(i)] += aib.tree[i];
}
for(int i = 1; i <= nrq; i++){
in>>type>>a>>b;
if(type == 1){
out<<(aib.sum(b) - aib.sum(a - 1))<<"\n";
}else{ aib.add(a, -b); }
}
return 0;
}