Cod sursa(job #1689152)

Utilizator mariakKapros Maria mariak Data 13 aprilie 2016 23:28:38
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>
#define Nmax 15002
FILE *fin  = freopen("datorii.in", "r", stdin);
FILE *fout = freopen("datorii.out", "w", stdout);

using namespace std;
int n, m, aib[Nmax];
void update(int pos, int val)
{
    do
    {
        aib[pos] += val;
        pos += pos & -pos;
    }while(pos <= n);
}
int sum(int pos)
{
    int s = 0;
    while(pos)
    {
        s += aib[pos];
        pos -= pos & -pos;
    }
    return s;
}
void read()
{
    int i, x;
    scanf("%d %d", &n, &m);
    for(i = 1; i <= n; ++ i)
    {
        scanf("%d", &x);
        update(i, x);
    }
}
void solution()
{
    int t, a, b;
    while(m --)
    {
        scanf("%d %d %d", &t, &a, &b);
        if(t == 0)
            update(a, -b);
        else printf("%d\n", sum(b) - sum(a - 1));
    }
}
int main()
{
    read();
    solution();
    return 0;
}