Cod sursa(job #41240)

Utilizator Bluedrop_demonPandia Gheorghe Bluedrop_demon Data 28 martie 2007 03:10:37
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
// Problema datorii

#include <stdio.h>
#define MAX       15001

int A[MAX];
int n;

int query(int x)
{
    int r = 0;
    for (; x; x -= x ^ (x-1) & x)
        r += A[x];
    return r;
} 

void update(int x, int v)
{
      for (; x <= n; x += x^(x-1) & x)
          A[x] += v;
}

int main()
{
    freopen( "datorii.in", "rt", stdin );
    long m;
        scanf( "%d %ld", &n, &m );
    int i;
        for( i=1; i<=n; i++ )
             scanf( "%d ", &A[i] );
    freopen( "datorii.out" , "wt", stdout );
    int c, p, q;
             while( m > 0 )
             {
                    m--;
                    scanf( "%d %d %d", &c, &p, &q );
                    if( c == 0 ) update( p, q );
                        else
                        printf( "%d\n", query(q)-query(p-1) );
             }                    

    fclose( stdin );
    fclose( stdout );
    return 0;
    
}