Cod sursa(job #2409368)

Utilizator SemetgTemes George Semetg Data 18 aprilie 2019 22:29:38
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
using namespace std;

const string FILE_NAME = "f";
const int N_MAX = 15005;

ifstream in { FILE_NAME + ".in" };
ofstream out { FILE_NAME + ".out" };

int N, M;
int aib[N_MAX];

void update(int i, int val) {
    while (i <= N) {
        aib[i] += val;
        i += i & -i;
    }
}

int sum(int i) {
    int sol { 0 };
    while (i) {
        sol += aib[i];
        i -= i & -i;
    }
    
    return sol;
}

void init() {
    in >> N >> M;
    
    for (int i { 1 }; i <= N; ++i) {
        int x;
        in >> x;
        update(i, x);
    }
}

void solve() {
    while (M--) {
        int c, a, b;
        in >> c >> a >> b;
        
        if (c == 0)
            update(a, -b);
        else
            out << sum(b) - sum(a - 1) << '\n';
    }
}

int main() {
    init();
    solve();
}