Cod sursa(job #2300848)

Utilizator CiprianC11Constantinescu Ciprian CiprianC11 Data 12 decembrie 2018 10:39:53
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <cstdio>

using namespace std;

int aib[15005], n;

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

int query(int a, int b)
{
    int s = 0;
    for(; b; b -= b & -b) s += aib[b];
    for(a = a - 1; a; a -= a & -a) s -= aib[a];
    return s;
}

int main()
{
    freopen("datorii.in", "r", stdin);
    freopen("datorii.out", "w", stdout);
    int m, a, b;
    bool t;
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= n; i++)
        scanf("%d", &a), update(i, a);
    while(m--)
    {
        scanf("%d%d%d", &t, &a, &b);
        if(t) printf("%d\n", query(a, b));
        else update(a, -b);
    }
    return 0;
}