Pagini recente » Monitorul de evaluare | Borderou de evaluare (job #2088377) | Borderou de evaluare (job #3324354) | Monitorul de evaluare | Cod sursa (job #3310655)
#include <fstream>
using namespace std;
ifstream cin("datorii.in");
ofstream cout("datorii.out");
const int maxn=15005;
int aib[maxn];
int n,m;
int V[maxn];
int lsb(int x){
return x&(-x);
}
void update(int poz,int val){
for(;poz<=n;poz+=lsb(poz)){
aib[poz]-=val;
}
}
void update1(int poz,int val){
for(;poz<=n;poz+=lsb(poz)){
aib[poz]+=val;
}
}
int query(int poz){
int s=0;
for(;poz>0;poz-=lsb(poz)){
s+=aib[poz];
}
return s;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>V[i];
update1(i,V[i]);
}
while(m--){
int op;
cin>>op;
if(op==0){
int poz,val;
cin>>poz>>val;
update(poz,val);
}
else{
int st,dr;
cin>>st>>dr;
cout<<query(dr)-query(st-1)<<'\n';
}
}
return 0;
}