Pagini recente » Cod sursa (job #236447) | Cod sursa (job #1549028) | Cod sursa (job #2424725) | Cod sursa (job #1563539) | Cod sursa (job #2852887)
#include <fstream>
#define lsb(x) ((x ^ (x - 1)) + 1) / 2
#define NMAX 15004
using namespace std;
ifstream fin ("datorii.in");
ofstream fout ("datorii.out");
int n, m;
int aib[NMAX];
void citire();
void update(int poz, int val);
int suma(int poz);
int main()
{
citire();
return 0;
}
void citire()
{
int cerinta, a, b;
fin >> n >> m;
for (int i = 1; i <= n; i++)
{
fin >> a;
update(i, -a);
}
for (int i = 1; i <= m; i++)
{
fin >> cerinta >> a >> b;
if (cerinta == 0)
update(a, b);
else
fout << suma(b) - suma(a-1) << '\n';
}
}
int suma(int poz)
{
int s = 0;
for (int i = poz; i; i -= lsb(i))
s += aib[i];
return s;
}
void update(int poz, int val)
{
for (int i = poz; i <= n; i += lsb(i))
aib[i] -= val;
}
int caut_binar(int val)
{
int st = 0, dr = n + 1, mij;
while (dr - st > 1)
{
mij = (st + dr) / 2;
if (val < suma(mij))
dr = mij;
else if (val > suma(mij))
st = mij;
else
return mij;
}
return -1;
}