Cod sursa(job #2832650)

Utilizator Bogdan.paun50Mandresi Bogdan Bogdan.paun50 Data 14 ianuarie 2022 01:52:52
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("datorii.in");
ofstream fout("datorii.out");

int i, n, m, x, q, a, b;
int aib[100010];

int lsb(int i)
{
    return (i&(-i));
}

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

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

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