Pagini recente » Cod sursa (job #1906981) | Cod sursa (job #1098843) | Cod sursa (job #1610466) | Cod sursa (job #1274239) | Cod sursa (job #2649997)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n;
vector<int> ai;
void update(int ind, int val, int le=0, int ri=n, int pos=1){
ai[pos]+=val;
if(le==ri) return;
int mid=(le+ri)/2;
if(ind<=mid) update(ind,val, le,mid, 2*pos);
else update(ind,val, mid+1, ri, 2*pos+1);
}
int query(int a, int b, int le=0,int ri=n, int pos=1){
if(a==le and b==ri) return ai[pos];
int ans=0, mid=(le+ri)/2;
if(a<=mid) ans+=query(a,min(b,mid), le,mid, 2*pos);
if(b>mid) ans+=query(max(a,mid+1),b, mid+1,ri, 2*pos+1);
return ans;
}
int main() {
int m; fin>>n>>m;
ai.resize(4*n+1);
for(int i=1;i<=n;++i){
int x; fin>>x;
update(i,x);
}
for(int i=1;i<=m;++i){
int t, x,y;
fin>>t>>x>>y;
if(t==0) update(x,-y);
else fout<<query(x,y)<<"\n";
}
}