Pagini recente » Cod sursa (job #2157645) | Monitorul de evaluare | Cod sursa (job #1042945) | Cod sursa (job #706912) | Cod sursa (job #954857)
Cod sursa(job #954857)
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
vector<int> v;
int n,m;
int lsb(int x){
return ((x^(x-1))+1)>>1;
}
void update(int p,int x){
for(int i=p;i<=n;i+=lsb(i)){
v[i]+=x;
}
}
int query(int p){
int ans=0;
while(p){
ans+=v[p];
p-=lsb(p);
}
return ans;
}
int main(){
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d",&n,&m);
v.push_back(0);
for(int i=0;i<n;i++){
v.push_back(0);
}
for(int i=1;i<=n;i++){
int x;
scanf("%d",&x);
update(i,x);
}
for(int i=1;i<=m;i++){
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a==0){
update(b,-c);
}
if(a==1){
printf("%d\n",query(c)-query(b-1));
}
}
return 0;
}