Cod sursa(job #1521292)

Utilizator Theodor1000Cristea Theodor Stefan Theodor1000 Data 10 noiembrie 2015 08:51:07
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>
#include <algorithm>
#include <vector>

using namespace std;

int aib[15010], n;

inline void add (int x, int val)
{
    for (int i = x; i <= n; i += i & (-i))
        aib[i] -= val;
}

inline int querry (int a)
{
    int rez = 0;
    for (int i = a; i; i -= i & (-i))
        rez += aib[i];

    return rez;
}

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

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

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

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

        if (!op)
        {
            add (a, b);
            continue;
        }

        printf ("%d\n", querry (b) - querry (a - 1));
    }

    return 0;
}