Cod sursa(job #2386588)

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

int V[15000], AIB[15000];
int n, m, T, a, b;

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

int compute(int x)
{
    int i, rez = 0;
    for(int i=x; i>0; i -= zeros(i))
        rez += AIB[i];
    return rez;
}


int main()
{
    freopen("datorii.in", "r", stdin);
    freopen("datorii.out", "w", stdout);
    scanf("%d %d", &n, &m);
    for(int i=1; i<=n; i++)
    {
        scanf("%d", &V[i]);
        add(i, V[i]);
    }
    for(int i=1; i<=m; i++)
    {
        scanf("%d %d %d", &T, &a, &b);
        if(T == 0)
            add(a, -b);
        else printf("%d\n", compute(b) - compute(a-1));
    }
    return 0;
}