Cod sursa(job #2209167)

Utilizator pitradaPit-Rada Ionel-Vasile pitrada Data 1 iunie 2018 23:09:11
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <vector>
#include <fstream>
using namespace std;

void add(vector<int> &bit, int i, int x) {
  for (; i <= bit.size(); i += i & -i) bit[i] += x;
}

int prefix(vector<int> &bit, int i) {
  int sum = 0;
  for (; i; i -= i & -i) sum += bit[i];
  return sum;
}

int main() {
    ifstream    f("datorii.in");
    ofstream    g("datorii.out");
    int         N, M; f >> N >> M;
    vector<int> bit(N + 1);

    for (int i = 1; i <= N; i++) {
      int x; f >> x; add(bit, i, x);
    }

    while (M--) {
      int op, a, b; f >> op >> a >> b;
      if (op == 0) {
        add(bit, a, -b);
      } else {
        g << prefix(bit, b) - prefix(bit, a-1) << endl;
      }
    }

    return 0;
}