Cod sursa(job #2602351)

Utilizator irimia_alexIrimia Alex irimia_alex Data 16 aprilie 2020 18:57:18
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>
#define NMAX 100000

using namespace std;

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

int aib[NMAX], v[NMAX];

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

int getSum(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,q;
	fin >> n >> q;
	for (int i = 1;i <= n;++i) {
		fin >> v[i];
		update(i, v[i], n);
	}

	while (q--) {
		int t;
		fin >> t;
		if (t == 1) {
			int a, b;
			fin >> a >> b;
			fout << getSum(a, b) << '\n';
		}
		else if (t == 0) {
			int index, val;
			fin >> index >> val;
			update(index, -val, n);
		}
	}

	return 0;
}