Pagini recente » Cod sursa (job #659777) | Cod sursa (job #476186) | Cod sursa (job #2636582) | Cod sursa (job #234283) | Cod sursa (job #2594349)
#include <bits/stdc++.h>
#define DIM 100005
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int N,M,pret[10*DIM];
int T,V,P,Q,sum_rest;
bool op;
void update(int nod, int st, int dr){
if(st == dr)
pret[nod] += V;
else{
int mij = (st+dr)/2;
if(T<= mij)
update(2*nod,st,mij);
else
update(2*nod+1,mij+1,dr);
pret[nod] = pret[2*nod] + pret[2*nod+1];
}
}
void query(int nod, int st, int dr){
if(P<=st && dr<=Q)
sum_rest += pret[nod];
else{
int mij = (st+dr)/2;
if(P <= mij)
query(2*nod,st,mij);
if(Q > mij)
query(2*nod+1,mij+1,dr);
}
}
int main(){
f>>N>>M;
for(int i=1; i<=N; i++){
T=i; f>>V;
update(1,1,N);
}
for(int i=1; i<=M; i++){
f>>op;
if(op==0){
f>>T>>V; V*=(-1);
update(1,1,N);
}
else{
sum_rest = 0;
f>>P>>Q;
query(1,1,N);
g<<sum_rest<<"\n";
}
}
}