Pagini recente » Cod sursa (job #2482597) | Cod sursa (job #3188943) | Cod sursa (job #2072098) | Cod sursa (job #180112) | Cod sursa (job #1555145)
#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int val,vec[60001],sum,n,m,z,t,x,y,poz,i,j;
void update(int nod,int st,int dr)
{
int m;
if (st==dr)
vec[nod]+=val;
else{
m=(st+dr)/2;
if (poz<=m) update(2*nod,st,m);
else update(2*nod+1,m+1,dr);
vec[nod]=vec[2*nod]+vec[2*nod+1];
}
}
void query(int nod,int st,int dr)
{
int m;
if (i<=st && dr<=j)
sum+=vec[nod];
else
{
m=(st+dr)/2;
if (m<j) query(2*nod+1,m+1,dr);
if (m>=i) query(2*nod,st,m);
}
}
int main()
{
f>>n>>m;
for (i=1;i<=n;i++)
f>>val,poz=i,update(1,1,n);
for (z=1;z<=m;z++)
{
f>>t>>x>>y;
if (t==0)
{
poz=x;
val=-y;
update(1,1,n);
}
else
{
sum=0;
i=x,j=y;
query(1,1,n);
g<<sum<<'\n';
}
}
return 0;
}