Pagini recente » Cod sursa (job #1734150) | Cod sursa (job #1770488) | Cod sursa (job #1324259) | Cod sursa (job #1065341) | Cod sursa (job #1290907)
#include <fstream>
#define Nmax 4*15000
using namespace std;
ifstream is ("datorii.in");
ofstream os ("datorii.out");
int N, M, arb[Nmax], poz, val, l, r, suma;
void Update(int nod, int s, int d);
void Query(int nod, int s, int d);
int main()
{
is >> N >> M;
for(int i = 1; i <= N; ++i)
{
is >> val;
val -= 2*val;
poz = i;
Update(1, 1, N);
}
int x;
for(int i = 1; i <= M; ++i)
{
is >> x;
if(!x)
{
is >> poz >> val;
Update(1, 1, N);
}
else
{
is >> l >> r;
suma = 0;
Query(1, 1, N);
os << suma << "\n";
}
}
is.close();
os.close();
return 0;
}
void Update(int nod, int s, int d)
{
if( s == d )
{
arb[nod] -= val;
return;
}
int m = (s+d)/2;
if(poz <= m) Update(nod*2, s, m);
else Update(nod*2+1, m+1, d);
arb[nod] = arb[2*nod] + arb[2*nod+1];
}
void Query(int nod, int s, int d)
{
if(l <= s && r >= d)
{
suma += arb[nod];
return;
}
int m = (s+d)/2;
if(l <= m) Query(nod*2, s, m);
if(r > m) Query(nod*2+1, m+1, d);
}