Pagini recente » Cod sursa (job #2037278) | Registru diplome | Cod sursa (job #1733883) | Cod sursa (job #1536027) | Cod sursa (job #441789)
Cod sursa(job #441789)
#include <fstream>
#define zeros(n) (n & -n)
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
long int n, *c, k, st;
inline void dec(long int x, int y)
{
while (x <= n)
{
c[x] -= y;
x += zeros(x);
}
}
inline void add(long int x, int y)
{
while (x <= n)
{
c[x] += y;
x += zeros(x);
}
}
inline int interog(int x)
{
long int sum = 0;
while (x > 0)
{
sum += c[x];
x -= zeros(x);
}
return sum;
}
int main()
{
long int x, y, z, t;
fin >> n >> t;
c = new long int[n + 1];
for (int i = 1; i <= n; ++i)
{
fin >> x;
add(i, x);
};
for (int i = 0; i < t; ++i)
{
fin >> x;
if (!x)
{
fin >> y >> z;
dec(y, z);
}
else
{
fin >> y >> z;
fout << interog(z) - interog(y - 1) << '\n';
}
}
return 0;
}