Cod sursa(job #2404672)

Utilizator redstonegamer22Andrei Ion redstonegamer22 Data 13 aprilie 2019 11:28:52
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>

using namespace std;

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

#define zeros(x) ((x^(x-1))&x)

long long int AIB[15005];
int n;

void add(int x, long long int quantity) {
    for(int i = x; i <= n; i += zeros(i))
        AIB[i] += quantity;

}

long long int compute(int x) {
    long long int sum = 0;

    for(int i = x; i > 0; i -= zeros(i))
        sum += AIB[i];

    return sum;
}

int main() {
    ios::sync_with_stdio(false);

    int m, tmp;
    cin >> n >> m;

    //int m, tmp;

    for(int i = 1; i <= n; i++) {
        cin >> tmp;
        add(i, tmp);
    }

    int op, qt, day, st, dr;

    for(int i = 1; i <= m; i++) {
        cin >> op;
        if(op == 0) {
            cin >> day >> qt;
            add(day, -qt);
        }
        else {
            cin >> st >> dr;
            cout << compute(dr) - compute(st-1) << endl;
        }
    }
}