Pagini recente » Cod sursa (job #1516722) | Cod sursa (job #2744951) | Cod sursa (job #1940572) | Cod sursa (job #2567363) | Cod sursa (job #2615739)
#include <iostream>
#include <fstream>
#define N 15001
using namespace std;
ifstream f ("datorii.in");
ofstream g ("datorii.out");
int a[N],n, m,index, val, sum, op, m1, m2, i;
void operatieA(int x, int s, int d)
{
if (s == d)
{
a[x] += val;
return;
}
int mijl = (s + d)/2;
if (i <= mijl)
operatieA(2*x, s, mijl);
else
operatieA(2*x+1, mijl+1, d);
a[x] = a[x*2] + a[x*2+1];
}
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 >> val;
operatieA(1, 1, n);
}
for(int j=1; j<=m; j++)
{
f >> op >> m1 >> m2;
if (op == 0)
{
i = m1;
val = -m2;
operatieA(1, 1, n);
}
if(op == 1)
{
sum = 0;
operatieB(1, 1, n);
g << sum << '\n';
}
}
return 0;
}