Cod sursa(job #2942029)

Utilizator rastervcrastervc rastervc Data 18 noiembrie 2022 19:58:43
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>

using namespace std;

ifstream fin("datorii.in");
ofstream fout("datorii.out");

#define stinl static inline
constexpr int MAX_N = 15005;
constexpr int MAX_M = 100005;
using i64 = long long;

namespace FenwickTree {
	i64 tree[MAX_N];
	int N;

	stinl void add(int i, int x) {
		for (; i <= N; i += i & (-i))
			tree[i] += x;
	}

	stinl i64 query(int i) {
		i64 sum = 0;
		for (; i > 0; i -= i & (-i))
			sum += tree[i];
		return sum;
	}

	stinl i64 segment(int i1, int i2) {
		return query(i2) - query(i1 - 1);
	}
}

int N, M, i, x, type, A, B;

int main() {
	fin >> N >> M;

	FenwickTree::N = N;
	for (i = 1; i <= N; i++) {
		fin >> x;
		FenwickTree::add(i, x);
	}

	for (i = 1; i <= M; i++) {
		fin >> type >> A >> B;
		if (type == 0) FenwickTree::add(A, -B);
		else fout << FenwickTree::segment(A, B) << '\n';
	}

	fin.close();
	fout.close();
	return 0;
}