Cod sursa(job #2872616)

Utilizator apocal1ps13Stefan Oprea Antoniu apocal1ps13 Data 17 martie 2022 15:54:53
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<iostream>
#include<fstream>
const int NMAX = 1.5e4 + 1;
#define lsb1(i) i += i&(-i)
#define lsb2(i) i -= i&(-i)
std::ifstream in("datorii.in");
std::ofstream out("datorii.out");
using namespace std;
int aib[NMAX], n, query;
void update(int index, int val) {
	for (int i = index; i <= n; lsb1(i))
		aib[i] += val;
}
int que(int ind) {
	int suma = 0;
	for (int i = ind; i >= 1; lsb2(i))
		suma += aib[i];
	return suma;
}
int main() {
	in >> n >> query;
	for (int i = 1; i <= n; i++) {
		int x;
		in >> x;
		update(i, x);
	}
	for (int i = 0; i < query; i++) {
		int task;
		in >> task;
		if (task == 1) {
			int a, b;
			in >> a >> b;
			out << que(b) - que(a - 1) << '\n';
		}
		else {
			int a, b;
			in >> a >> b;
			update(a, -b);
		}
	}
	return 0;
}