Pagini recente » Cod sursa (job #2684747) | Cod sursa (job #3321762) | Cod sursa (job #3306109) | Cod sursa (job #3311100) | Cod sursa (job #3308975)
#include <fstream>
using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
int n,m, ai[60005], tip, a, b;
void update(int pos, int val, int nod=1, int st=1, int dr=n){
if(st==dr){
ai[nod]=ai[nod]-val;
return;
}
int mij=(st+dr)/2;
if(pos<=mij)
update(pos, val, 2*nod, st, mij);
else
update(pos, val, 2*nod+1, mij+1, dr);
ai[nod]=ai[2*nod]+ai[2*nod+1];
}
int query(int a, int b, int nod=1, int st=1, int dr=n){
if(a<=st && dr<=b)
return ai[nod];
int tot=0, mij=(st+dr)/2;
if(a<=mij)
tot+=query(a,b, 2*nod, st, mij);
if(b>mij)
tot+=query(a,b, 2*nod+1, mij+1, dr);
return tot;
}
int main()
{
cin>>n>>m;
for(int i=1; i<=n;i++){
cin>>a;
update(i, -a);
}
while(m--){
cin>>tip>>a>>b;
if(tip==0)
update(a, b);
else
cout<<query(a,b)<<'\n';
}
return 0;
}