Cod sursa(job #964547)

Utilizator FlameingoAiordachioaei Marius Flameingo Data 21 iunie 2013 13:44:07
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <cstdio>

const int DMAX = 100003;
int N, A[DMAX], a, b, p = 1;

void update_aib (int i) {

    while (i <= N)
        A[i] += p * b,
        i += i & (-i);

}

int subseq_1n (int i) {

    int s = 0;
    while (i)
        s += A[i],
        i -= i & (-i);
    return s;

}

int main () {

    freopen ("datorii.in", "r", stdin);
    freopen ("datorii.out", "w", stdout);
    int M, i;
    scanf ("%d%d", &N, &M);
    for (i = 1; i <= N; ++i)
        scanf ("%d", &b), update_aib (i);
    p = -1;
    while (M--) {
        scanf ("%d%d%d", &i, &a, &b);
        if (i)
            printf ("%d\n", subseq_1n(b) - subseq_1n(a - 1));
        else
            update_aib (a);
    }
}