Cod sursa(job #2657628)

Utilizator WladDalwMvladutu cristian vlad WladDalwM Data 11 octombrie 2020 12:39:01
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>

using namespace std;

ifstream cin("datorii.in");
ofstream cout("datorii.out");

int n;
int aib[15005];


int lsb(int x)
{
    return x - (x & (x - 1));
}

void u(int poz , int val)
{
    while(poz <= n)
    {
        aib[poz] += val;
        poz += lsb(poz);
    }
}

int q(int poz)
{
    int sum = 0;
    while(poz)
    {
        sum += aib[poz];
        poz -= lsb(poz);
    }
    return sum;

}

int main()
{
    int m,i,p,a,b;
    cin >> n >> m;
    for(i = 1; i <= n; i++)
    {
        cin >> a;
        u(i , a);
    }
    for(i = 1; i <= m; i++)
    {
        cin >> p >> a >> b;
        if(p == 0)
            u(a,-b);
        if(p == 1)
            cout << q(b)-q(a-1)<<'\n';
    }
    return 0;
}