Cod sursa(job #2502227)

Utilizator maria_bMaria Burdila maria_b Data 30 noiembrie 2019 15:06:08
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 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;
}