Cod sursa(job #2164835)

Utilizator futurengineerOana Rosca futurengineer Data 13 martie 2018 10:00:57
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <fstream>

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

using namespace std;

int n, op, x, cod, a[100001];

void adauga(int poz, int val) {
  for (int i = poz; i <= n; i += p2(i))
    a[i] += val;
}

int suma(int poz) {
  int s = 0;
  for (int i = poz; i > 0; i -= p2(i))
    s += a[i];
  return s;
}

int main () {
  int a, b;

  ifstream fi("datorii.in");
  ofstream fo("datorii.out");
  fi >> n >> op;
  for (int i = 1; i <= n; i++)
    fi >> x, adauga(i, x);
  for (int i = 1; i <= op; i++) {
    fi >> cod >> a >> b;
    if (!cod)
      adauga(a, -b);
    else
      fo << suma(b)-suma(a-1) << '\n';
  }
  return 0;
}