Cod sursa(job #2497683)

Utilizator Mirela_MagdalenaCatrina Mirela Mirela_Magdalena Data 23 noiembrie 2019 10:09:13
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <cstdio>
#define zeros(x) ((x^(x-1))&x)
using namespace std;

int n, q, T, a, b;
int V[15005], AIB[15005];

void add(int index, int value)
{
    for(int i = index; i <= n; i += zeros(i))
        AIB[i] += value;
}

int sum(int index)
{
    int s = 0;
    for(int i = index; i >= 1; i -= zeros(i))
        s += AIB[i];
    return s;
}



void read()
{
    scanf("%d %d", &n, &q);
    for(int i=1; i<=n; ++i)
    {
        scanf("%d", &V[i]);
        add(i, V[i]);
    }
}

void solve()
{
    for(int i=0; i<q; ++i)
    {
        scanf("%d %d %d", &T, &a, &b);
        if(T == 0)
            add(a, -b);
        else printf("%d\n", sum(b) - sum(a-1));
    }
}


int main()
{
    freopen("datorii.in", "r", stdin);
    freopen("datorii.out", "w", stdout);
    read();
    solve();
    return 0;
}