Cod sursa(job #2626354)

Utilizator Gradinaru_StefanStef 2 Gradinaru_Stefan Data 6 iunie 2020 13:49:52
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>


using namespace std;

ifstream f ("datorii.in");
ofstream g ("datorii.out");

int aib[100001], v[100001];

int getSum(int index) {
	int s = 0;
	while (index > 0) {
		s += aib[index];
		index -= index & (-index);
	}
	return s;
}

int Sum(int a, int b) {

	return getSum(b) - getSum(a - 1);
}

void update(int index, int val,int n) {
	while (index <= n) {
		aib[index] += val;
		index += index & (-index);
	}
}


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

	while (m--) {
		int op;
		f>> op;

		if (op == 0) {
			int x, y;
			f>> x >> y;
			update(x, -y, n);

		}else if (op == 1) {
			int a, b;
			f>> a >> b;
			g << Sum(a, b) << '\n';
		}

	}

	return 0;
}