Pagini recente » Cod sursa (job #97429) | Cod sursa (job #1894313) | Cod sursa (job #1857060) | Cod sursa (job #1874298) | Cod sursa (job #1533444)
#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int N,M,A[1<<15],x,a,b,T,V,P,Q;
short cod;
int query(int nod, int st,int dr)
{
int mij=(st+dr)/2,s1=0,s2=0;
if(a<=st && b>=dr)
return A[nod];
else
{
if(a<=mij)
s1=query(2*nod,st,mij);
if(b>mij)
s2=query(2*nod+1,mij+1,dr);
return s1+s2;
}
}
void update(int nod, int st, int dr)
{
if(a<=st && b>=dr)
A[nod]-=V;
else
{
int mij=(st+dr)/2;
if(a<=mij)
update(2*nod,st,mij);
if(b>mij)
update(2*nod+1,mij+1,dr);
A[nod]=A[2*nod+1]+A[2*nod];
}
}
int main()
{
int i;
f>>N>>M;
for(i=1; i<=N; i++)
{
f>>x;
a=i;
b=i;
V=-x;
update(1,1,N);
}
for(i=1; i<=M; i++)
{
f>>cod;
if(cod==0)
{
f>>T>>V;
a=T;
b=T;
update(1,1,N);
}
if(cod==1)
{
f>>P>>Q;
a=P;
b=Q;
g<<query(1,1,N);
g<<'\n';
}
}
return 0;
}