Cod sursa(job #3338896)

Utilizator moticailovitalieMoticailo Vitalie moticailovitalie Data 5 februarie 2026 13:14:46
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
using namespace std;

const int MAXN = 15005;

int N, M;
int arbore[MAXN];

void adauga(int poz, int valoare) {
    for (int i = poz; i <= N; i += i & -i)
        arbore[i] += valoare;
}

int sumaPrefix(int poz) {
    int suma = 0;

    for (int i = poz; i > 0; i -= i & -i)
        suma += arbore[i];

    return suma;
}

int sumaInterval(int st, int dr) {
    return sumaPrefix(dr) - sumaPrefix(st - 1);
}

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

    fin >> N >> M;

    for (int i = 1; i <= N; i++) {
        int valoare;
        fin >> valoare;
        adauga(i, valoare);
    }

    for (int i = 1; i <= M; i++) {
        int operatie, a, b;
        fin >> operatie >> a >> b;

        if (operatie == 0) {
            adauga(a, -b);
        } 
        else {
            fout << sumaInterval(a, b) << "\n";
        }
    }

    fin.close();
    fout.close();
    return 0;
}