Cod sursa(job #2844982)

Utilizator Radu_marioRadu Mario Radu_mario Data 6 februarie 2022 18:52:27
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <bits/stdc++.h>
using namespace std;

ifstream file_in("datorii.in");
ofstream file_out("datorii.out");

int N, M, i, AIB[15005];

inline int LSB(int Value) { return Value & (-Value); }

void Update(int Position, int Value)
{
	while (Position <= N)
	{
		AIB[Position] += Value;
		Position += LSB(Position);
	}
}

int Query(int Position)
{
	int Result = 0;

	while (Position)
	{
		Result += AIB[Position];
		Position -= LSB(Position);
	}

	return Result;
}

int main()
{
	int Value, Code, A, B;
	file_in >> N >> M;

	for (i = 1; i <= N; ++i)
	{
		file_in >> Value;
		Update(i, Value);
	}

	for (i = 1; i <= M; ++i)
	{
		file_in >> Code >> A >> B;
		if (!Code) Update(A, -B);
		else file_out << Query(B) - Query(A - 1) << '\n';
	}

	return 0;
}