Pagini recente » Cod sursa (job #2096738) | Cod sursa (job #832806) | Cod sursa (job #1919050) | Cod sursa (job #838590) | Cod sursa (job #69530)
Cod sursa(job #69530)
//(c) author Mircea Dima
// Arbori Indexati Binar
// datorii.cpp
#include <stdio.h>
#define maxn 20000
#define bit(x) ( (x) & (((x)-1)^x))
int s[maxn], m, n;
void update(int x, int val, int sgn)
{
for(; x<=n ;x+=bit(x)) s[x]+=sgn*val;
}
int query(int x)
{
int sum=0;
for(; x>0 ;x-=bit(x))sum+=s[x];
return sum;
}
void citire()
{
int i;
freopen("datorii.in", "r", stdin);
freopen("datorii.out", "w", stdout);
scanf("%d %d\n", &n, &m);
for(i=1;i<=n;i++)
{
int x;
scanf("%d ", &x);
update(i, x, 1);
}
for(i=1;i<=m;i++)
{
int p, q, t;
scanf("%d %d %d\n", &p, &q, &t);
if(p==0) update(q, t, -1);
else printf("%d\n", query(t)-query(q-1));
}
}
int main()
{
citire();
return 0;
}