Cod sursa(job #159218)

Utilizator city_guy91alex isip city_guy91 Data 14 martie 2008 00:03:11
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>   
#define maxn 1<<20   
#define bit(k)  (((k) & ((k)-1))  ^ (k))   
int a[maxn];   
int n;   
void update(int x, int val, int sgn)   
  
{   
    for(;x<=n;x+=bit(x))a[x]+=val*sgn;   
  
}   
  
int query(int x)   
{   
int sum=0;   
for(;x>0;x-=bit(x)) sum+=a[x];   
return sum;   
}   
  
int main()   
{   
    int  m;   
    freopen("datorii.in", "r", stdin);   
    freopen("datorii.out", "w", stdout);   
    scanf("%d %d\n", &n, &m);   
    int k,p;   
    for(k=1;k<=n;k++) { scanf("%d ", &p); update(k, p, 1);}   
  
    for(k=1;k<=m;k++)   
{   
    int i, j, l;   
    scanf("%d %d %d\n", &i, &j, &l);   
    if(i==1) printf("%d\n", query(l)-query(j-1));   
        else update(j, l, -1);   
}   
return 0;   
}