Cod sursa(job #2865308)

Utilizator IanisOpritescuOpritescu Ianis IanisOpritescu Data 8 martie 2022 18:24:10
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <fstream>
#define zero(x) ((x^(x-1))&x)

using namespace std;

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

int n, m;
int v[15001];
int AIB[15001];

void actualizare(int i, int v)
{
	for (; i <= n; i += i & (-i))
		AIB[i] += v;
}

int suma(int i)
{
	int s = 0;
	for (; i > 0; i -= i & (-i))
		s += AIB[i];
	return s;
}

int main()
{
	fin >> n >> m;
	for (int i = 1; i <= n; i++)
		fin >> v[i], actualizare(i, v[i]);

	for (int i = 1; i <= m; i++)
	{
		int c, x, y;
		fin >> c >> x >> y;
		if (c == 1)
			fout << suma(y) - suma(x - 1) << "\n";
		else
			actualizare(x, -y);
	}
	return 0;
}