Cod sursa(job #1778525)

Utilizator isav_costinVlad Costin Andrei isav_costin Data 13 octombrie 2016 21:11:48
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>

int n, aib[15005];

using namespace std;

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

int query( int p )
{
    int s=0;

    for( ; p>0; p-=p&-p )
        s=s+aib[p];

    return s;
}

int main()
{
    freopen( "datorii.in", "r", stdin );
    freopen( "datorii.out", "w", stdout );

    int m, i, k, op, a, b;

    scanf( "%d%d", &n, &m );

    for( i=1;i<=n;i++ )
    {
        scanf( "%d", &k );
        update(i,k);
    }

    for( i=1;i<=m;i++ )
    {
        scanf( "%d%d%d", &op, &a, &b );

        switch( op )
        {
            case 0:
                update(a,-b);
                    break;

            case 1:
                printf( "%d\n", query(b)-query(a-1) );
        }
    }

    return 0;
}