Cod sursa(job #2030230)

Utilizator PondorastiAlex Turcanu Pondorasti Data 1 octombrie 2017 12:38:36
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>
using namespace std;
const int NMAX = 15000;
int n, m, aib[NMAX + 2], a, b, q;
int lastBit(int x) { return x & (-x);}
void update(int poz, int val, int n) {
    for(; poz <= n; poz += lastBit(poz))
        aib[poz] += val;
}
int query(int poz) {
    int ans = 0;
    for(; poz; poz -= lastBit(poz))
        ans += aib[poz];
    return ans;
}
int main() {
    ifstream cin("datorii.in");
    ofstream cout("datorii.out");
    cin >> n >> m;
    for(int i = 1; i <= n; i++) {
        cin >> a;
        update(i, a, n);
    }
    for(int i = 1; i <= m; ++i) {
        cin >> q >> a >> b;
        if(!q) {
            update(a, -b, n);
        } else {
            cout << query(b) - query(a - 1) << "\n";
        }
    }
}