Cod sursa(job #2672502)

Utilizator NanuGrancea Alexandru Nanu Data 14 noiembrie 2020 09:34:18
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda cex_ph_16 Marime 0.73 kb
#include <fstream>
#include <algorithm>
 
using namespace std;
 
ifstream cin("datorii.in");
ofstream cout("datorii.out");
 
#define Ub(x) (x & (-x))
#define NMAX 15001
 
int aib[NMAX], n, m, tip, a, b;
 
void add(int pos, int val) {
    for(int i = pos; i <= n; i += Ub(i))
        aib[i] += val;
}
 
int suma(int pos) {
    int i, s = 0;
    for(i = pos; i >= 1; i -= Ub(i))
        s += aib[i];
    return s;
}
 
int main() {
    cin >> n >> m;
    for(int i = 1; i <= n; i++) {
        cin >> a;
        add(i, a);
    }
 
    for(int i = 1; i <= m; i++) {
        cin >> tip >> a >> b;
        if(tip == 0)
            add(a, -b);
        else cout << suma(b) - suma(a - 1) << '\n';
    }
 
    return 0;
}