Pagini recente » Cod sursa (job #2009912) | Monitorul de evaluare | Profil M@2Te4i | Cod sursa (job #1967591) | Cod sursa (job #770536)
Cod sursa(job #770536)
#include <cstdio>
using namespace std;
const int N = 15005;
int aib[N];
int n, m, x, y, k;
int lsb(int x)
{
return ((x & (x - 1)) ^ x);
}
void update(int poz, int val)
{
for (int i = poz; i <= n; i += lsb(i))
aib[i] -= val;
}
int query(int poz)
{
int rez = 0;
for (int i = poz; i >= 1; i -= lsb(i))
rez += aib[i];
return rez;
}
int main()
{
freopen ("datorii.in", "r", stdin);
freopen ("datorii.out", "w", stdout);
scanf("%d %d", &n, &m);
for (int i = 1; i <= n; ++i) {
scanf("%d", &x);
update(i, -x);
}
for (int i = 1; i <= m; ++i) {
scanf("%d %d %d", &k, &x, &y);
if (k == 0)
update(x, y);
else
printf("%d\n", query(y) - query(x - 1));
}
return 0;
}