Cod sursa(job #426056)

Utilizator stefan92alexandru stefan stefan92 Data 26 martie 2010 13:17:17
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<cstdio>

FILE *in = fopen("datorii.in","r"), *out = fopen("datorii.out","w"); 


int n, m; 
 int b[15000];

 int query(int x) 
{int r = 0; 
    
while ( x ) 
       
r += b[x], x -= (x&(x-1))^x; 
 return r; 
} 
 
 
void update(int x, int val) 
{     
while ( x <= n ) 
b[x] += val, x += (x&(x-1))^x; 
} 
 
 
void goAIB() 
{ 
    
int a, c, d; 
    
for ( int i = 1; i <= n; ++i ) 
       
{fscanf(in,"%d",&a); update(i, a);} 
 
 
    
for ( int i = 1; i <= m; ++i ) 
    
{ 
        
fscanf(in,"%d %d %d",&a ,&c, &d);
        
if ( a ) 
            
fprintf(out,"%d\n",query(d) - query(c-1)); 
        
else
          
update(c, -d); 


}}
int main()
{fscanf(in,"%d %d",&n, &m);
goAIB();
return 0;}