Cod sursa(job #1261287)

Utilizator isa_fares_mudiFares Mohamad isa_fares_mudi Data 12 noiembrie 2014 10:30:20
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <csdtio>

using namespace std;
int aib[15001] ;
int n ;
int query ( int poz )
{
    int s ;
    s = 0 ;
    for ( ; poz ; poz & ( poz - 1 ) ^ poz )
        s += aib[poz] ;
    return s ;
}
void update ( int poz, int val )
{
    for ( ; poz <= n ; poz += poz & ( poz - 1 ) ^ poz )
        aib[poz] += val ;
}
int main()
{
    freopen ( "datorii.in","r",stdin ) ;
    freopen ( "datorii.out","w",stdout ) ;
    int m, d, lp, i, op, a, b ;
    scanf ( "%d%d",&n,&m ) ;
    for ( i = 1 ; i <= n ; i ++ )
    {
        scanf ( "%d",&d ) ;
        update ( i, d ) ;
    }
    for ( i = 1 ; i <= m ; i ++ )
    {
        scanf ( "%d%d%d",&op,&a,&b ) ;
        if ( op == 0 )
            update ( a, -b ) ;
        else
            printf ( "%d",query ( b ) - query ( a-1 ) ) ;
    }
    return 0;
}