Pagini recente » Cod sursa (job #335369) | Cod sursa (job #1638072) | Cod sursa (job #2096013) | Cod sursa (job #2291723) | Cod sursa (job #2615742)
#include <iostream>
#include <fstream>
#define N 15001
using namespace std;
ifstream f ("datorii.in");
ofstream g ("datorii.out");
int a[N],v[N],n, m, first, last, index, val, sum, op, m1, m2, i;
void operatieA(int x, int s, int d)
{
a[x] += v[i];
if (s == d)
{
return;
}
int mijl = (s + d)/2;
if (index <= mijl)
operatieA(2*x, s, mijl);
if (index > mijl)
operatieA(2*x+1, mijl+1, d);
}
void operatieB(int x, int s, int d)
{
if (m1 <= s && d <= m2)
{
sum += a[x];
return;
}
int mijl = (s + d)/2;
if (m1 <= mijl)
operatieB(2*x, s, mijl);
if (m2 > mijl)
operatieB(2*x + 1, mijl+1, d);
}
int main ()
{
f >> n >> m;
for(i = 1; i <= n; i++)
{
f >> v[i];
index = i;
operatieA(1, 1, n);
}
for(i=1; i<=m; i++)
{
f >> op >> m1 >> m2;
if (op == 0)
{
index = m1;
v[i] = -m2;
operatieA(1, 1, n);
}
else
{
sum = 0;
operatieB(1, 1, n);
g << sum << '\n';
}
}
return 0;
}