Pagini recente » Cod sursa (job #3176013) | Cod sursa (job #269636) | Cod sursa (job #825653) | Cod sursa (job #1694572) | Cod sursa (job #2686451)
#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n, m, i, val, c, x, y, poz, start, finish, TOTAL, tree[30100];
static inline void Update(int nod, int st, int dr)
{
if (st == dr)
{
tree[nod] -= val;
return;
}
int m = (st + dr) / 2;
if (poz <= m)
Update(2 * nod, st, m);
else
Update(2 * nod + 1, m + 1, dr);
tree[nod] = tree[2 * nod] + tree[2 * nod + 1];
}
static inline void Query(int nod, int st, int dr)
{
if (start <= st && finish >= dr)
{
TOTAL += tree[nod];
return;
}
int m = (st + dr) / 2;
if (start <= m)
Query(2 * nod, st, m);
if (m < finish)
Query(2 * nod + 1, m + 1, dr);
}
int main()
{
f >> n >> m;
for (i = 1; i <= n; ++i)
{
f >> val;
poz = i;
val = -val;
Update(1, 1, n);
}
for (i = 1; i <= m; ++i)
{
f >> c >> x >> y;
if (c == 0)
{
poz = x;
val = y;
Update(1, 1, n);
}
else
{
TOTAL = 0;
start = x;
finish = y;
Query(1, 1, n);
g << TOTAL << '\n';
}
}
return 0;
}