Cod sursa(job #2480555)

Utilizator dorufDoru Floare doruf Data 25 octombrie 2019 19:41:21
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>
using namespace std;

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

int aib[10000];
int n;


// a[i] += val
void Update(int p, int val)
{
	for (int i = p; i <= n; i += i & -i)
		aib[i] += val;
}

// a[1] + ... + a[i]
int Query(int p)
{
	int suma = 0;
	for (int i = p; i >= 1; i -= i & -i)
		suma += aib[i];
		
	return suma;
}

int main()
{
	int x, y, m;
	bool t;
	fin >> n >> m;
	
	for (int i = 1; i <= n; ++i)
	{
		fin >> x;
		Update(i, x);
	}
	
	for (int i = 1; i <= m; ++i)
	{
		fin >> t >> x >> y;
		if (!t)
			Update(x, -y);
		else
			fout << Query(y)- Query(x - 1) << '\n';
	}
}