Cod sursa(job #1139423)

Utilizator Theodor1000Cristea Theodor Stefan Theodor1000 Data 11 martie 2014 09:41:03
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <cstdio>

#define sum(x) (x & (-x))

using namespace std;

int n, m, v[15010];

void add (int x, int poz)
{
    for (int i = poz; i <= n; i += sum(i))
        v[i] += x;
}

int suma (int poz)
{
    int s = 0;
    for (int i = poz; i; i -= sum(i))
        s += v[i];

    return s;
}

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

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

    for (int i = 1; i <= n; i++)
    {
        int x;
        scanf ("%d", &x);

        add (x, i);
    }

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

        if (!x) add (-b, a);
        else printf ("%d\n", suma (b) - suma (a - 1));
    }

    return 0;
}