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