Cod sursa(job #181033)

Utilizator cristina_vajVajaitu Cristina cristina_vaj Data 17 aprilie 2008 20:15:47
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
 #include <cstdio>  
  
 #define LSB(x) (x & ~(x-1))  
   
 int C[1<<14];  
 int N, M, val;  
   
 void update (int i){  
     for (int x = i; x <= N; x += LSB(x))   
         C[x] += val;  
 }  
   
 int query (int i){  
     int sol = 0;  
     for (int x = i; x; x -= LSB(x))  
         sol += C[x];  
     return sol;  
 }  
   
 int main (){  
     freopen ("datorii.in", "rt", stdin);  
	 freopen ("datorii.out", "wt", stdout);  
		
     scanf ("%d %d", &N, &M);  
       for (int i = 1; i <= N; ++ i)   
         scanf ("%d ", &val), update(i);  
       
     int t, a, b;  
     for (; M; -- M){  
         scanf ("%d %d %d", &t, &a, &b); val = -b;  
         if (!t) update(a);  
         else printf ("%d\n", query(b) - query(a - 1));  
     }  
       
     return 0;  
  }