Cod sursa(job #1034527)

Utilizator cbanu96Banu Cristian cbanu96 Data 17 noiembrie 2013 21:32:04
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <cstdio>

#define FILEIN "datorii.in"
#define FILEOUT "datorii.out"
#define NMAX 15005

using namespace std;

int V[NMAX];
int N;

void add(int idx, int val)
{
    while ( idx <= N )
    {
        V[idx] += val;
        idx += (-idx & idx);
    }
}

int query(int idx)
{
    int sum = 0;
    while ( idx )
    {
        sum += V[idx];
        idx -= (-idx & idx);
    }

    return sum;
}

int main()
{
    freopen(FILEIN, "r", stdin);
    freopen(FILEOUT, "w", stdout);

    int T;

    scanf("%d %d", &N, &T);
    for ( int i = 1, x; i <= N; i++)
       scanf("%d", &x), add(i, x);

    while(T--)
    {
        int t, x, y;
        scanf("%d %d %d", &t, &x, &y);

        if ( t == 0 )
        {
            add(x, -y);
        }
        else
        {
            printf("%d\n", query(y) - query(x-1));
        }
    }

    return 0;
}