Pagini recente » Cod sursa (job #1861829) | Cod sursa (job #2509737) | Cod sursa (job #35021) | Cod sursa (job #547537) | Cod sursa (job #2431394)
#include <fstream>
#define MAX 15005
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n,q,Arb[MAX*4],sum;
int poz,val,start,finish;
void read();
void solve();
void Update(int, int, int);
void Query(int, int, int);
int main(){
read();
solve();
return 0;
}
void Query(int nod, int st, int dr){
if(start<=st&&finish>=dr){
sum+=Arb[nod];
return;
}
int mij=(st+dr)>>1;
if(mij>=start)
Query(nod*2,st,mij);
if(mij<finish)
Query(nod*2+1,mij+1,dr);
}
void Update(int nod, int st, int dr){
if(st==dr){
Arb[nod]-=val;
return;
}
int mij=(st+dr)>>1;
if(poz<=mij)
Update(nod*2,st,mij);
else
Update(nod*2+1,mij+1,dr);
Arb[nod]=Arb[nod*2]+Arb[nod*2+1];
}
void solve(){
int a,b;
bool task;
while(q--){
fin>>task>>a>>b;
if(task){
sum=0, start=a, finish=b;
Query(1,1,n);
fout<<sum<<'\n';
}
else{
poz=a, val=b;
Update(1,1,n);
}
}
}
void read(){
int i,x;
fin>>n>>q;
for(i=1;i<=n;++i){
fin>>x;
poz=i, val=-x;
Update(1,1,n);
}
}