Cod sursa(job #3120430)

Utilizator stefanbejan07Bejan Stefan stefanbejan07 Data 6 aprilie 2023 21:52:36
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>
#define zeros(x)  ( (x ^ (x - 1)) & x )
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int AIB[60005];
int N, M;
void Update(int P, int quantity)
{
	for (int i = P; i <= N; i += zeros(i))
		AIB[i] = AIB[i] + quantity;
}
int Query(int P)
{
	int SUM = 0;
	for (int i = P; i > 0; i -= zeros(i))
		SUM += AIB[i];
	return SUM;
}
void Task()
{
	fin >> N >> M;
	for (int i = 1; i <= N; ++i)
		    {
		        int X;
		        fin >> X;
		        Update(i, X);
		    }
	for (int i = 1; i <= M; ++i)
	{
		int C, T, V, P, Q;
		fin >> C;
		if (C == 0)
		{
			fin >> T >> V;
			Update(T, V);
		}
		else
		{
			fin >> P >> Q;
			fout << Query(Q) - Query(P - 1) << '\n';
		}
	}
}
int main()
{
	Task();
	return 0;
}