Cod sursa(job #2558694)

Utilizator _Tudor_Tudor C _Tudor_ Data 26 februarie 2020 19:03:44
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");

const int NMax = 15005;
int n, m;
int sume[NMax];

void modSuma(int pos, int val)
{
	while(pos <= n)
	{
		sume[pos] += val;
		pos += pos & -pos;
	}
}

void read()
{
	fin >> n >> m;

	int val;
	for(int i = 1; i <= n; i++)
	{
		fin >> val;
		modSuma(i, val);
	}
}

int suma(int p)
{
	int s = 0;
	while(p > 0)
	{
		s += sume[p];
		p -= p & -p;
	}
	return s;
}

int main()
{
	read();

	int cod, a, b;
	for(int i = 0; i < m; i++)
	{
		fin >> cod >> a >> b;

		if(cod == 0)
			modSuma(a, -b);
		else
			fout << suma(b) - suma(a - 1) << '\n';
	}
}