Cod sursa(job #2672176)

Utilizator IRadu1529Radu Ionescu IRadu1529 Data 13 noiembrie 2020 12:54:14
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#include <vector>
#include <iostream>
using namespace std;

ifstream fin("datorii.in");
ofstream fout("datorii.out");
const int NMAX = 15001;
#define pow2k(x) (x ^ (x - 1) & x)

int n, m;

int aib[NMAX], v[NMAX + 1];

void update(int x, int y);
int query(int x);


int main() {
	int x, y, type;

	fin >> n >> m;
	for (int i = 1; i <= n; ++i) {
		fin >> v[i];
		update(i, v[i]);
	}

	for (int i = 1; i <= m; ++i) {
		fin >> type >> x >> y;
		if (type == 0)
			update(x, -y);
		else
			cout << query(y) - query(x - 1) << "\n";
	}
}

void update(int x, int y) {
	for (int i = x; i <= n; i + pow2k(i))
		aib[i] += y;
}

int query(int x) {
	int s = 0;
	for (int i = x; i >= 1; i -= i & (-i))
		s += aib[i];
	return s;
}