Pagini recente » Cod sursa (job #3297209) | Cod sursa (job #1232309) | Cod sursa (job #107681) | Cod sursa (job #3270476) | Cod sursa (job #695104)
Cod sursa(job #695104)
// Datorii
#include <fstream>
#define NMAX 300011
using namespace std;
int N,M,A[NMAX],Pos,Val,Start,Finish,Sum;
void Update(int nod, int left, int right){
if(left==right){
A[nod]-=Val;
return;
}
int mid=(left+right)/2;
if(Pos<=mid) Update(2*nod,left,mid);
else Update(2*nod+1,mid+1,right);
A[nod]=A[2*nod]+A[2*nod+1];
}
void Query(int nod, int left, int right){
if(Start<=left && right<=Finish){
Sum+=A[nod];
return;
}
int mid=(left+right)/2;
if(Start<=mid)
Query(2*nod,left,mid);
if(Finish>mid)
Query(2*nod+1,mid+1,right);
}
int main(){
int i,op;
ifstream in("datorii.in");
ofstream out("datorii.out");
in>>N>>M;
for(i=1;i<=N;i++){
in>>Val;
Pos=i;
Val=-Val;
Update(1,1,N);
}
for(;M>0;M--){
in>>op;
if(op==0){
in>>Pos>>Val;
Update(1,1,N);
}
else{
Sum=0;
in>>Start>>Finish;
Query(1,1,N);
out<<Sum<<"\n";
}
}
in.close();
out.close();
return 0;
}