Cod sursa(job #3191869)

Utilizator internetexplorerInternet Explorer internetexplorer Data 10 ianuarie 2024 19:59:23
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>

using namespace std;

int n, m;
ifstream fin ("datorii.in");
ofstream fout ("datorii.out");

int aib[15006];

int ub(int x)
{
    return (x & (-x));
}

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

int sum (int x)
{
    int rez = 0;
    for (int i = x; i >= 1; i-=ub(i))
    {
        rez+=aib[i];
    }
    return rez;
}

int main()
{
    fin >> n >> m;
    for (int i = 1; i <= n; i++)
    {
        int q;
        fin >> q;
        add(i, q);
    }
    while(m--)
    {
        int op, a, b;
        fin >> op >> a >> b;
        if (op == 1)
            fout << sum(b) - sum(a-1) << '\n';
        else
            add(a, -b);
    }
    return 0;
}