Pagini recente » Cod sursa (job #3126147) | Cod sursa (job #2476006) | Cod sursa (job #493014) | Cod sursa (job #748851) | Cod sursa (job #2949508)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
const int NMAX=15000;
int n, m;
struct Node{
int sum;
} a[NMAX*4+1];
void update(int pos, int val, int node=1, int st=1, int dr=n){
if(st==dr){
a[node].sum+=val;
return;
}
int mid=(st+dr)/2;
if(pos<=mid){
update(pos, val, node*2, st, mid);
}else{
update(pos, val, node*2+1, mid+1, dr);
}
a[node].sum=a[node*2].sum+a[node*2+1].sum;
}
int query(int x, int y, int node=1, int st=1, int dr=n){
if(x>dr || y<st) return 0;
if(x<=st && y>=dr) return a[node].sum;
int mid=(st+dr)/2;
int Q_st=query(x, y, node*2, st, mid);
int Q_dr=query(x, y, node*2+1, mid+1, dr);
return Q_st+Q_dr;
}
int main(){
fin >> n >> m;
for(int i=1; i<=n; i++){
int x;
fin >> x;
update(i, x);
}
while(m--){
int c, a, b;
fin >> c >> a >> b;
if(c==0){
update(a, -b);
}else{
fout << query(a, b) << "\n";
}
}
}