Pagini recente » Cod sursa (job #2531880) | Cod sursa (job #1758912) | Cod sursa (job #1285031) | Cod sursa (job #2057557) | Cod sursa (job #2300841)
#include <cstdio>
using namespace std;
int aib[15005], n;
void update(int poz, int val)
{
for(; poz <= n; poz += poz & -poz) aib[poz] += val;
}
void update1(int poz, int val)
{
for(; poz <= n; poz += poz & -poz) aib[poz] -= val;
}
int query(int a, int b)
{
int s = 0;
a--;
for(; b; b -= b & -b) s += aib[b];
for(; a; a -= a & -a) s -= aib[a];
return s;
}
int main()
{
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
int m, a, b;
bool t;
scanf("%d%d", &n, &m);
for(int i = 0; i < n; i++)
scanf("%d", &a), update(i + 1, a);
while(m--)
{
scanf("%d%d%d", &t, &a, &b);
if(t) printf("%d\n", query(a, b));
else update1(a, b);
}
return 0;
}