Cod sursa(job #3323540)

Utilizator NeamtuMateiNeamtu Matei-Constantin NeamtuMatei Data 18 noiembrie 2025 16:59:12
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <iostream>
#include <fstream>
using namespace std;

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

const int MAXN = 15e3;

int n, x, nrQ, task, a, b;
int aint[4*MAXN];

void update(int a, int b, int nod, int poz, int val) {
    if (a == b) {
        aint[nod] = val;
        return;
    }

    int mid = (a + b) / 2;
    if (poz <= mid)
        update(a, mid, 2*nod, poz, val);
    else
        update(mid + 1, b, 2*nod + 1, poz, val);

    aint[nod] = aint[2*nod] + aint[2*nod + 1];
}

int query(int a, int b, int nod, int st, int dr) {
    int sumSt = 0, sumDr = 0;

    if (st <= a && b <= dr)
        return aint[nod];

    int mid = (a + b) / 2;

    if (st <= mid)
        sumSt = query(a, mid, 2*nod, st, dr);
    if (mid < dr)
        sumDr = query(mid + 1, dr, 2*nod + 1, st, dr);

    return sumSt + sumDr;
}

int main() {
    in >> n >> nrQ;
    for (int i = 1; i <= n; i++)
        in >> x,
        update(1, n, 1, i, x);

    for (int i = 1; i <= nrQ; i++) {
        in >> task >> a >> b;

        if (task == 0) {
            //update(1, n, 1, a, b);
        }

        else
            out << query(1, n, 1, a, b) << '\n';

    }

    return 0;
}