Pagini recente » Cod sursa (job #1110714) | Cod sursa (job #1693013) | Cod sursa (job #3191290) | Monitorul de evaluare | Cod sursa (job #3325212)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n,m,v[15005],aib[15005];
int lsb(int x){
return x&-x;
}
void add(int day,int val){
while(day<=n){
aib[day] += val;
day += lsb(day);
}
}
int query(int date){
if(date<=0) return 0;
int res = 0;
while(date>0){
res += aib[date];
date-=lsb(date);
}
return res;
}
int main(){
fin>>n>>m;
for(int i=1;i<=n;i++){
fin>>v[i];
aib[i] = v[i];
}
for(int i=1;i<=n;i++){
int parent = i + lsb(i);
if(parent<=n) aib[parent] += aib[i];
}
int q,r,l;
for(int i=1;i<=m;i++){
fin>>q>>l>>r;
if(q == 0){
add(l,-r);
}else fout<<query(r) - query(l-1) << '\n';
}
return 0;
}