Cod sursa(job #50332)

Utilizator gigi_becaliGigi Becali gigi_becali Data 7 aprilie 2007 14:51:48
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <cstdio>
#define maxn 64000
#define bit(x) ( (x) &(((x)-1)^(x)))

int S[maxn];
 int n, m, i, p, q,t;
void update(int x, int val, int sgn)
{
 for(;x<=n;x+=bit(x)) S[x]+=val*sgn;
}

int query(int x)
{
 int sum=0;
   for(;x>0;x-=bit(x)) sum+=S[x];
   return sum;
}

int main()
{

   freopen("datorii.in", "r", stdin);
   freopen("datorii.out", "w", stdout);
   scanf("%d %d\n", &n, &m);
   for(i=1;i<=n;i++)
   {
    scanf("%d ", &p);
    update(i, p,1);
   }
    for(i=1;i<=m;i++)
    {
        scanf("%d %d %d\n", &t, &p, &q);
        if(t==0) update(p, q, -1);
        else printf("%d\n", query(q)-query(p-1));
    }

 return 0;
}