Cod sursa(job #1206883)

Utilizator cosmin_bobeicaCosmin Bobeica cosmin_bobeica Data 11 iulie 2014 13:44:54
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <cstdio>

using namespace std ;

const int NMAX = 15002 ;

int aib[NMAX] , n ;

inline void update (int poz , int val )
{
    for( ; poz <= n ; poz += poz &- poz )
        aib[poz] += val ;
}

inline int query ( int poz )
{
    int s = 0 ;
    for( ; poz ; poz -= poz &- poz )
        s += aib[poz] ;
    return s ;
}

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