Cod sursa(job #3358774)

Utilizator AndreiEnacheTheGoatAndrei Iancu Enache AndreiEnacheTheGoat Data 20 iunie 2026 10:15:06
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <vector>

using namespace std;

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

vector <int> AIB;
int n;

int zeros(int x)
{
    return (x ^ (x - 1)) & x;
}

void add(int x, int temp)
{
    int i;
    for(i = x; i <= n; i += zeros(i))
        AIB[i] += temp;
}

int sum(int x)
{
    int i, sum;
    sum = 0;
    for(i = x; i > 0; i -= zeros(i))
        sum += AIB[i];
    return sum;
}

int main()
{
    int q, i, x, inde1, inde2;
    bool val;
    fin >> n >> q;
    AIB.resize(n + 1);
    for(i = 1; i <= n; i ++)
    {
        fin >> x;
        add(i, x);
    }
    for(i = 1; i <= q; i ++)
    {
        fin >> val >> inde1 >> inde2;
        if(val == 0)
            add(inde1, -inde2);
        if(val == 1)
            fout << sum(inde2) - sum(inde1 - 1) << "\n";
    }
    return 0;
}