Cod sursa(job #1260188)

Utilizator dinuvldVlad Dinu dinuvld Data 10 noiembrie 2014 23:04:30
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <cstdio>
using namespace std;
int aib[15005], n;

void update(int poz, int valoare)
{
    for (; poz <= n; poz += poz & (poz - 1) ^ poz)
        aib[poz] += valoare;
}

int query(int poz)
{
    int s = 0;
    for (; poz <= n; poz -= poz & (poz - 1) ^ poz)
        s += aib[poz];
    return s;
}

int main()
{
        int m, x, a, b, c, i;
        freopen("datorii.in", "r", stdin);
        freopen("datorii.out", "w", stdout);
        scanf("%d%d", &n, &m);
        for (i=1; i<=n; i++)
        {
            scanf("%d", &x);
            update (i, x);
        }

        for (i=1; i<=n; i++)
        {
            scanf ("%d%d%d", &a, &b, &c);
            if (a)
                printf("%d\n", query(c) - query(b-1));
            else
                update (b, -c);
        }
}