Cod sursa(job #2982911)

Utilizator PHOSSESSEDProsie Radu-Teodor PHOSSESSED Data 21 februarie 2023 09:53:05
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<fstream>
#include<vector>
using namespace std;

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

class AIB
{
private:
    int n; vector<int> aib;
    int lsb(int x){return x & -x;}
public:
    AIB(int _n)
    {
        n = _n;
        aib.resize(n + 1,0);
    }

    void update(int poz,int val)
    {
        for(int i = poz; i <= n ; i += lsb(i)) aib[i] += val;
    }

    int query(int poz)
    {
        int ans = 0;
        for(int i = poz ; i ; i -= lsb(i)) ans += aib[i]; return ans;
    }
};

int main()
{
   int n,q,a,b,c;
   cin >> n >> q; AIB aib(n);
   for(int i = 1; i <= n ; i++)
    {
        cin >> a;
        aib.update(i,a);
    }

    while(q--)
        {
            cin >> a >> b >> c;
            if(a == 0) aib.update(b,-c);
            else cout << (aib.query(c) - aib.query(b - 1)) << '\n';
        }

    return 0;
}