Cod sursa(job #2446869)

Utilizator FrostfireMagirescu Tudor Frostfire Data 11 august 2019 00:28:16
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>

using namespace std;

ifstream f("datorii.in");
ofstream g("datorii.out");

int n, m, tree[15100];

void Update(int poz, int val)
{
    while(poz <= n)
        {   tree[poz] += val;
            int lastBit = poz & (-poz);
            poz += lastBit;
        }
}

int getSum(int poz)
{
    int sum = 0;
    while(poz)
        {   sum += tree[poz];
            int lastBit = poz & (-poz);
            poz -= lastBit;
        }
    return sum;
}

int main()
{
    f >> n >> m;
    for(int i=1; i<=n; i++)
        {   int x;
            f >> x;
            Update(i, x);
        }
    for(int i=1; i<=m; i++)
        {   int t;
            f >> t;
            if(!t)
                {   int val, poz;
                    f >> poz >> val;
                    Update(poz, -val);
                }
            else
                {   int p, q;
                    f >> p >> q;
                    g << getSum(q) - getSum(p-1) << '\n';
                }
        }
    return 0;
}