Cod sursa(job #1643880)

Utilizator TataruTataru Mihai Tataru Data 9 martie 2016 20:32:51
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#include <cstdio>

const char inFile[] = "datorii.in";
const char outFile[] = "datorii.out";
const int NMAX = 15002;

using namespace std;

int arb[NMAX], n, m;

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

int sum(int i)
{
    int s = 0;
    for(i; i > 0; i -= i & -i)
        s += arb[i];
    return s;
}

int main()
{
    int x, a, b;
    freopen(inFile, "r", stdin);
    freopen(outFile, "w", stdout);
    scanf("%d %d", &n, &m);
    for(int i = 1; i <= n; ++i) {
        scanf("%d", &x);
        update(i, x);
    }
    for(int i = 1; i <= m; ++i) {
        scanf("%d %d %d", &x, &a, &b);
        if(x == 0) {
            update(a, -b);
        }
        else {
            printf("%d\n", sum(b) - sum(a-1));
        }
    }
}