Cod sursa(job #1261290)

Utilizator isa_fares_mudiFares Mohamad isa_fares_mudi Data 12 noiembrie 2014 10:38:18
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>

using namespace std;
int aib[15001] ;
int n ;
void update(int poz,int valoare)
{
    for(; poz<=n; poz+=poz&(poz-1)^poz)
    {
        aib[poz]+=valoare;
    }
}
int query(int poz)
{
    int s;
    s=0;
    for(; poz; poz-=poz&(poz-1)^poz)
    {
        s+=aib[poz];
    }
    return s;
}
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\n",query ( b ) - query ( a-1 ) ) ;
    }
    return 0;
}