Cod sursa(job #3304150)

Utilizator Andrei-Dani-10Pisla Andrei Daniel Andrei-Dani-10 Data 21 iulie 2025 11:20:47
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>

using namespace std;

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

const int nmax = 15000;
int n, nrq, type, a, b;
int value;

inline int f(int x){ return (x & (-x)); }
struct fenwicktree{
    int tree[nmax + 2];
    void add(int pos, int val){
        for(int i = pos; i <= n; i += f(i))
            tree[i] += val;
    }

    int sum(int pos){
        int s = 0;
        for(int i = pos; i >= 1; i -= f(i))
            s += tree[i];
        return s;
    }
} aib;

int main(){

    in>>n>>nrq;
    for(int i = 1; i <= n; i++){
        in>>value;

        aib.tree[i] += value;
        if(i + f(i) <= n)
            aib.tree[i + f(i)] += aib.tree[i];
    }

    for(int i = 1; i <= nrq; i++){
        in>>type>>a>>b;

        if(type == 1){
            out<<(aib.sum(b) - aib.sum(a - 1))<<"\n";
        }else{ aib.add(a, -b); }
    }

    return 0;
}