Pagini recente » Cod sursa (job #2160304) | Cod sursa (job #2062549) | Cod sursa (job #2707940) | Cod sursa (job #2346143) | Cod sursa (job #2250677)
#include <fstream>
std::ifstream cin("datorii.in");
std::ofstream cout("datorii.out");
using namespace std;
#define maxn 15005
int arb[maxn*4];
int N,M,val,start,finish,pos,sol;
void update(int nod, int st, int dr){
if(st==dr){
arb[nod]+=val;
return;
}
int mij=(st+dr)/2;
if(pos<=mij)
update(nod*2,st,mij);
else
update(nod*2+1, mij+1,dr);
arb[nod]=arb[nod*2]+arb[nod*2+1];
}
void querry(int nod, int st,int dr){
if(st>=start&&finish>=dr){
sol+=arb[nod];
return;
}
int mij=(st+dr)/2;
if(start<=mij)
querry(nod*2,st, mij);
if(finish>mij)
querry(nod*2+1,mij+1,dr);
}
int main()
{
int tip;
cin>>N>>M;
for(int i=1;i<=N;i++){
cin>>val; pos=i;
update(1,1,N);
}
for(;M--;){
cin>>tip;
if(tip){
sol=0;
cin>>start>>finish;
querry(1,1,N);
cout<<sol<<'\n';
}else{
cin>>pos>>val;
val=-val;
update(1,1,N);
}
}
return 0;
}