Cod sursa(job #1393229)

Utilizator radarobertRada Robert Gabriel radarobert Data 19 martie 2015 10:49:03
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>

using namespace std;

int aib[15002];
int n;

int zeros(int x)
{
    return (x ^ (x-1)) & x;
}

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

int sum(int x)
{
    int ret = 0;
    for (int i = x; i > 0; i -= zeros(i))
        ret += aib[i];
    return ret;
}

int main()
{
    ifstream in("datorii.in");
    ofstream out("datorii.out");

    int m;
    in >> n >> m;

    for (int val, i = 1; i <= n; i++)
    {
        in >> val;
        add(i, val);
    }

    int t;
    int a, b;
    while (m--)
    {
        in >> t >> a >> b;
        if (t == 0)
            add(a, -1 * b);
        else
            out << sum(b) - sum(a-1) << '\n';
    }

    return 0;
}