Pagini recente » Cod sursa (job #1156423) | Cod sursa (job #3234234) | Cod sursa (job #3143954) | Cod sursa (job #3160511) | Cod sursa (job #1017297)
#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m,i,v[1<<16],x,y,z,val,p,u,s;
void querry(int nod,int st,int dr){
if(st>=p && dr<=u || st==dr){
s+=v[nod];
return;}
int mij=(st+dr)/2;
if(p<=mij)
querry(2*nod,st,mij);
if(u>mij)
querry(2*nod+1,mij+1,dr);
}
void update(int nod,int st,int dr){
if(st==dr){
v[nod]-=z;
return;}
int mij=(st+dr)/2;
if(y<=mij)
update(2*nod,st,mij);
else
update(2*nod+1,mij+1,dr);
v[nod]-=z;
}
int main()
{
f>>n>>m;
for(i=1;i<=n;i++){
f>>val;
y=i;
z=-val;
update(1,1,n);}
for(i=1;i<=m;i++){
f>>x>>y>>z;
s=0;
p=y;
u=z;
if(x==0)
update(1,1,n);
else{
querry(1,1,n);
g<<s<<"\n";}
}
return 0;
}