Pagini recente » Cod sursa (job #1172118) | Cod sursa (job #2663969) | Cod sursa (job #538854) | Cod sursa (job #2451031) | Cod sursa (job #2563927)
#include <iostream>
#include <fstream>
#define dim 15010
using namespace std;
int N,M,Pos,Val,X,Y,Z,Arb[4*dim+66],S,i;
ifstream f("datorii.in");
ofstream g("datorii.out");
void Update(int nod, int stg, int dr)
{ if(stg==dr)
{ Arb[nod]=Arb[nod]+Val;
return;
}
int mij=(stg+dr)/2;
if(Pos<=mij) Update(2*nod,stg,mij);
else Update(2*nod+1,mij+1,dr);
Arb[nod]=Arb[2*nod]+Arb[2*nod+1];
}
void Query(int nod, int stg, int dr)
{ if(Y<=stg && dr<=Z)
{ S=S+Arb[nod];
return;
}
int mij=(stg+dr)/2;
if(Y<=mij) Query(2*nod,stg,mij);
if(mij<Z) Query(2*nod+1,mij+1,dr);
}
int main()
{
f>>N>>M;
for(i=1; i<=N; i++)
{ f>>X;
Pos=i; Val=X;
Update(1,1,N);
}
for(i=1; i<=M; i++)
{ f>>X>>Y>>Z;
if(X==0)
{ Val=-Z;
Pos=Y;
Update(1,1,N);
}
else
{ S=0;
Query(1,1,N);
g<<S<< '\n';
}
}
f.close();
g.close();
return 0;
}