Pagini recente » Cod sursa (job #1601481) | Cod sursa (job #572832) | Cod sursa (job #1913542) | Cod sursa (job #379519) | Cod sursa (job #2497708)
#include <cstdio>
#define nMax 16384
using namespace std;
int getMin2Pow(int x) {
return (x^(x-1))&x;
}
class Aib {
public:
int length;
int v[nMax];
Aib();
void add(int pos,int value);
int sum(int p);
int sum(int p1,int p2);
}Money;
Aib::Aib() {
}
void Aib::add(int pos,int value) {
for(;pos<=length;pos+=getMin2Pow(pos)) {
v[pos]+=value;
}
}
int Aib::sum(int p) {
int sol;
for(sol=0;p;p-=getMin2Pow(p)) {
sol+=v[p];
}
return sol;
}
int Aib::sum(int p1,int p2) {
return sum(p2)-sum(p1);
}
void read(int&q) {
int i,x;
scanf("%d%d",&Money.length,&q);
for(i=1;i<=Money.length;++i) {
scanf("%d",&x);
Money.add(i,x);
}
}
void task0() {
int pos,value;
scanf("%d%d",&pos,&value);
Money.add(pos,-value);
}
void task1() {
int p1,p2;
scanf("%d%d",&p1,&p2);
printf("%d\n",Money.sum(p1-1,p2));
}
void solve(const int&q) {
int iq,task;
for(iq=0;iq<q;++iq) {
scanf("%d",&task);
if(task) {
task1();
}
else {
task0();
}
}
}
int main()
{
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
int q;
read(q);
solve(q);
return 0;
}