Pagini recente » Cod sursa (job #383886) | Cod sursa (job #1951331) | Cod sursa (job #2788052) | Monitorul de evaluare | Cod sursa (job #1996331)
#include<stdio.h>
#include<iostream>
#include<algorithm>
int n, m;
int a[100001];
int b[100001];
int sum(int k)
{
int s = 0;
while (k >= 1)
{
s += b[k];
k -= k&-k;
}
return s;
}
void add(int poz, int quantity)
{
while (poz <= n)
{
b[poz] += quantity;
poz += poz&-poz;
}
}
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", &a[i]);
add(i, a[i]);
}
for (int i = 1; i <= m; i++)
{
int x, y, z;
scanf("%d %d %d", &x, &y, &z);
if (x == 0)
{
add(y, -z);
}
else
{
printf("%d\n", sum(z) - sum(y - 1));
}
}
return 0;
}