Cod sursa(job #2440069)

Utilizator AdrianaMAdriana Moisil AdrianaM Data 17 iulie 2019 15:12:50
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

ifstream is("datorii.in");
ofstream os("datorii.out");

int n;
vector<int> tree;

int Query(const int pos) {
  int sum = 0;
  for (int i = pos; i; i -= i & -i)
    sum += tree[i];
  return sum;
}

void Update(const int pos, const int val) {
  for (int i = pos; i <= n; i += i & -i)
    tree[i] -= val;
}

int main() {
  int m, val;
  is >> n >> m;
  tree = vector<int>(n + 1, 0);
  for (int i = 1; i <= n; ++i) {
    is >> val;
    Update(i, -val);
  }

  int type, x, y;
  while (m--) {
    is >> type >> x >> y;
    if (type == 0) {
      Update(x, y);
    } else {
      const int sum = Query(y) - Query(x - 1); 
      os << sum << "\n";
    }
  }

  is.close();
  os.close();
  return 0;
}